需求:

我们team普遍抱怨eclipse启动太慢,尤其是在同意安装了"AppScan"之后,有时候经常启动eclipse要1分钟以上,极大的影响了大家的工作热情。

解决方案概览:

我们可以使用jvisualvm这是JDK自带的一个小工具,来监控和管理我们的应用程序(比如eclipse),并且使用它的一些强大的插件,比如"Visual GC",来监控内存开销并且根据经验进行特定的调优。

启动”jvisualvm":



它会最后显示Visual VM的面板:

 

安装 ”Visual GC"插件:

这个插件是jvisualvm的插件,它非常强大,可以动态的对指定的进程进行监控,并且来通过统计面板来分类显示出各项任务/事件的总时间开销:

安装方法: Tool->Plugin->Available Plugins:

重启Visual VM 之后,就可以看到这个"Visual GC"已经被正确的显示了。

 

实战: 用Visual VM和Visual GC来优化我们的Eclipse启动:

首先,我们启动eclipse:

我们可以看到这个进程id为32561

 

我们从Visual VM中找到对应的process id:

我们切换到 “Visual GC"标签页,它会显示启动eclipse的所有测量数据:

 

分析:

从上图中我们可以很明显的看出来,主要的时间开销在以下2方面:

(1)编译时间有点长,用了3.794秒,这个时间主要是用来校验eclipse平台本身的字节码了,所以我们需要关闭字节码校验,让启动时候不会去校验平台本身(也是java写的)的字节码,为了达到这个目的,我们只需要在eclipse启动参数中加上-Xverify:none

如下所示,因为我们用的是Spring Source Tool Suite,所以我们在STS.ini中增加这一行。

(2)另外一个大问题就是类加载时间,它有2部分组成,因为类有2部分组成,一是eclipse平台自带的类,二是它所使用的插件的类文件,我们可以在eclipse启动的时候关闭不必要的插件加载来减少类加载时间,方法是Preference->General->Startup and Shutdown

 

校验结果:

现在我们把eclipse关闭并且重新打开,这会启动一个新的进程,id为32696,我们把这次Visual GC的测量图和原来的进行比较:

从这里可以看出来,时间被明显的缩短了,编译时间从3.794秒缩短到2.155秒,提升百分比为43.1%。而类加载时间从18.424秒缩短到10.208秒,提升百分比为44.6%。

 

额外步骤:

对于一些其他的启动参数,比如初始内存,最大内存,Gem,Perm的参数,可以参见我上文中的配置,我想,对于我机器已经是最优配置了,读者可以直接复制。关于这些参数,可以参见我去年的文章。