您的位置:首页 > 编程语言 > Java开发

Eclipse运行性能调优

2015-05-20 10:59 127 查看
最近,Eclipse(Eclipse-JEE3.5)运行十分缓慢(可能插件安装过多),因此,得到了个机会调优一下,以便提高工作效率

下图是未经任何调整eclipse的gc情况(使用jvisualvm命令,安装visual gc插件)



从图中可以看出,仅启动过程就有38次young gc,11次full gc

为了查看gc细节,在eclipse.ini中加入如下参数:

-verbose:gc

-XX:+PrintGCDetails

-XX:+PrintGCDateStamps

-Xloggc:D:/soft/eclipse-jee/gc.log

gc的内容如下:



从gc日志中可以看出:

(1)young区开始为4928K,持续的不够,因此造成不断的young gc

(2)full gc时,old区的空间增大扩容,因此old区空间也不够

为了防止这种情况发生,加入以下参数:

-Xms768m

-Xmx768m

-XX:NewSize=512m

-XX:MaxNewSize=512m

此次调整后结果如下图:



从图中可以看出,young gc没有了,但为啥还11次full gc呢?

以下是此次gc的日志:



从gc.log中,可以看出,是因为perm区的没有空间了,才导致的full gc,于是将perm区增大并固定大小

加入以下参数:

-XX:PermSize=96m

-XX:MaxPermSize=96m

此次调整后结果如下:



可以看出,没有full gc了,而且young gc只有一次,有了一定的效果了

启动时gc的问题解决了,现在来看其他问题:



从图中可以看出,如果classloader加载class的时间能快些,应该也会节省些时间

加入以下参数:

-Xverify:none(关闭Java字节码验证,从而加快了类装入的速度)



将上两图比较

第一个:平均每个类的载入时间为,54.615/10950 = 0.0049876712328767s

第二个:平均每个类的载入时间为,34.498/9484 = 0.0036374947279629s

可以看出,多少是有一些性能上的提高的

考虑到eclipse长时间运行,其他可能调节的有以下几点:

(1)关闭System.gc()

(2)提高eclipse中某些代码的JIT编译

(3)优化垃圾收集器,以减少垃圾收集造成应用无响应的时间

对于(1),加入以下参数:

-XX:+DisableExplicitGC

对于(2),会影响启动速度,但由于eclipse是长时间运行,因此此优化是必要的:

-XX:CompileThreshold=100(方法调用多少次就会被编译成本地机器码)



可以看出,编译方法的数量和时间明显增加

对于(3),换用CMS收集器应该比串行收集器要好,加入以下参数:

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=80

至此,调优结束

总结一下加入的参数如下:

-verbose:gc

-XX:+PrintGCDetails

-XX:+PrintGCDateStamps

-Xloggc:D:/soft/eclipse-jee-galileo-win32/eclipse/gc.log

-Xms512m

-Xmx512m

-XX:NewSize=256m

-XX:MaxNewSize=256m

-XX:PermSize=96m

-XX:MaxPermSize=96m

-XX:+DisableExplicitGC

-XX:CompileThreshold=100

-Xverify:none

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=80
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: