Eclipse插件开发步骤和两个内存分析工具

来源:互联网 发布:英达 巴图 知乎 编辑:程序博客网 时间:2024/06/05 02:41
不是说插件代码的事情,只是简单的把插件的开发步骤图形化总结一下,现在也没有时间去做插件的东西。这里只是个备忘而已。以后有机会再说吧。

第一步:新建一个plugin工程
图片
Next。

第二步:添加信息,工程名字,位置,Eclipse版本,这些简单设置Next.
图片 
第三步:基本上默认就可以,可以填个名字什么的卖个萌
图片 
第四步: 可以Next选择个模板,也可以Finish直接开始

第五步:填写相关代码,这里贴一个测试代码,也是别的代码,只是为了说明。
        
 
package startuptimeofeclipse.actions;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IStartup;
import org.eclipse.jface.dialogs.MessageDialog;
public class ShowTime implements IStartup{
    @Override
    public void earlyStartup() {
        // TODO Auto-generated method stub
        Display.getDefault().syncExec(new Runnable(){
            public void run(){
                long eclipseStartTime = Long.parseLong(System.getProperty("eclipse.startTime"));
                long costTime = System.currentTimeMillis() - eclipseStartTime;
                Shell shell = Display.getDefault().getActiveShell();
                String message = "Eclipse "+costTime +"ms";
                MessageDialog.openInformation(shell, "Information", message);
            }
        });
    }
}
//
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.startup">
           <startup class="startuptimeofeclipse.actions.ShowTime"/>
   </extension>
</plugin>
//plugin.xml
 
 第六步:写完代码之后,可以直接测试一下,右击工程,run as -----run eclipse application,运行成功之后,截图如下:
图片

第七步:如果想打包在别的eclipse下也可以使用怎么办?打包,打成JAR包放在plugin目录下,OK收工。 


关于visual VM的使用:在监测自己机子上tomcat的运行情况时,不能读取和分析堆文件,最后在tomcat运行时jvm里加上了如下参数:
-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false

然后再重新启动tomcat,在visual vm中添加JMX connection,因为上面设置的端口为8999,设置如下:
图片  
成功以后,就可以看到机子的运行状态,以及各种内存分析图表了
图片
点击HeapDump就可以生成堆的快照文件,然后拿出MAT分析一下:
 图片
当然这是一个正常的运行状态,如果是这样的一个图:
图片 
看看这里,一个Main方法把堆用完了
图片
 
 再看看这里,到底堆中是谁占用了这么多的空间?看看头条就知道是谁了---------------- Pilot,一共77676个对象。。。
图片
 
本想贴出这一段程序源代码,但代码不知道被我弄哪去了,这里大家也可以自己造一个内存溢出的例子来,生成快照文件再来看一下。如果想在命令行生成快照文件可以直接用java的-XX:+HeapDumpOnOutOfMemoryError参数也可以,然后用MAT分析一下。
        

0 0