迄今为止最优的Eclipse运行性能调优 ,含eclipse.ini

最近,Eclipse(Eclipse-JEE3.5)运行十分缓慢(可能插件安装过多),所以,获得了个机会调优一下,以便提升工做效率
下图是未经任何调整eclipse的gc状况(使用jvisualvm命令,安装visual gc插件)linux

在终端输入:jvisualvm运行后,工具->插件->visual gc,安装。app

启动eclipse后,在终端运行: ps -ef | grep eclipse,而后在jvisualvm的应用程序一栏选择eclipse pid的程序双击,便可到visual gc上查看图表。eclipse

-Xms1024m
-Xmx1024m工具

对应的为图中的 Old 区;性能

-XX:NewSize=768m
-XX:MaxNewSize=768m优化

对应的为图中的 Eden 区;ui

-XX:PermSize=200m
-XX:MaxPermSize=200m.net

对应的为图中的 Perm区;

从图中能够看出,仅启动过程就有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
日志

http://blog.csdn.net/gtuu0123/article/details/6720253

参考如上内容用的eclipse.ini:

一、小内存,运行状况不错

-clean
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835
-product
org.eclipse.epp.package.cpp.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-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

二、大内存

-clean
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835
-product
org.eclipse.epp.package.cpp.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms1600m
-Xmx1600m
-XX:NewSize=800m
-XX:MaxNewSize=800m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:+DisableExplicitGC
-XX:CompileThreshold=100
-Xverify:none
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=80

三、大内存,本身弄的,可能优化的不合理

-clean -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.library plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835 -product org.eclipse.epp.package.cpp.product --launcher.defaultAction openFile -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile --launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.6 -XX:MaxPermSize=256m -Xms40m -Xmx2048m -Xss1024k -Xss1024k -XX:+DisableExplicitGC -XX:CompileThreshold=100 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=80 -Xverify:none

相关文章
相关标签/搜索