不是说插件代码的事情,只是简单的把插件的开发步骤图形化总结一下,现在也没有时间去做插件的东西。这里只是个备忘而已。以后有机会再说吧。
第一步:新建一个plugin工程
第一步:新建一个plugin工程
Next。
第二步:添加信息,工程名字,位置,Eclipse版本,这些简单设置Next.
第二步:添加信息,工程名字,位置,Eclipse版本,这些简单设置Next.
第三步:基本上默认就可以,可以填个名字什么的卖个萌
第四步: 可以Next选择个模板,也可以Finish直接开始
第五步:填写相关代码,这里贴一个测试代码,也是别的代码,只是为了说明。
第六步:写完代码之后,可以直接测试一下,右击工程,run as -----run eclipse application,运行成功之后,截图如下:
第七步:如果想打包在别的eclipse下也可以使用怎么办?打包,打成JAR包放在plugin目录下,OK收工。
关于visual VM的使用:在监测自己机子上tomcat的运行情况时,不能读取和分析堆文件,最后在tomcat运行时jvm里加上了如下参数:
然后再重新启动tomcat,在visual vm中添加JMX connection,因为上面设置的端口为8999,设置如下:
第五步:填写相关代码,这里贴一个测试代码,也是别的代码,只是为了说明。
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
第七步:如果想打包在别的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分析一下:
点击HeapDump就可以生成堆的快照文件,然后拿出MAT分析一下:
当然这是一个正常的运行状态,如果是这样的一个图:
看看这里,一个Main方法把堆用完了
再看看这里,到底堆中是谁占用了这么多的空间?看看头条就知道是谁了---------------- Pilot,一共77676个对象。。。
本想贴出这一段程序源代码,但代码不知道被我弄哪去了,这里大家也可以自己造一个内存溢出的例子来,生成快照文件再来看一下。如果想在命令行生成快照文件可以直接用java的-XX:+HeapDumpOnOutOfMemoryError参数也可以,然后用MAT分析一下。