下图是未经任何调整eclipse的gc情况(使用jvisualvm命令,安装visual gc插件)
在终端输入:jvisualvm运行后,工具->插件->visual gc,安装。
启动eclipse后,在终端运行: ps -ef | grep eclipse,然后在jvisualvm的应用程序一栏选择eclipse pid的程序双击,即可到visual gc上查看图表。
-Xms1024m-Xmx1024m
对应的为图中的 Old 区;
-XX:NewSize=768m-XX:MaxNewSize=768m
对应的为图中的 Eden 区;
-XX:PermSize=200m-XX:MaxPermSize=200m
对应的为图中的 Perm区;从图中可以看出,仅启动过程就有38次young gc,11次full gc为了查看gc细节,在eclipse.ini中加入如下参数:-verbose:gc-XX:+PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:D:/soft/eclipse-jee/gc.loggc的内容如下:从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:
1、小内存,运行情况不错
-clean-startupplugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835-productorg.eclipse.epp.package.cpp.product--launcher.defaultActionopenFile-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256m--launcher.defaultActionopenFile--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
2、大内存
-clean-startupplugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835-productorg.eclipse.epp.package.cpp.product--launcher.defaultActionopenFile-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256m--launcher.defaultActionopenFile--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
3、大内存,自己弄的,可能优化的不合理
-clean-startupplugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835-productorg.eclipse.epp.package.cpp.product--launcher.defaultActionopenFile-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256m--launcher.defaultActionopenFile--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
转载于:https://www.cnblogs.com/Alandre/p/3856273.html
相关资源:数据结构—成绩单生成器