Eclipse JVM 性能调优


一直在用Eclipse做Java开发,但是eclipse默认提供的jvm参数并不是最优的,尤其是在垃圾回收方面。最近整理了一下eclipse jvm调优的技巧,这些技巧通过实际运行,发现确实有比较大的改善。

eclipse jvm调优的技巧分成两部分,第一部分是针对windows平台32位操作系统的,第二部分是针对Linux平台64位版本的。两个都是针对最新的jvm所作的调优,版本均是1.6.0_22-b04
其中,windows平台的硬件如下:

奔4 3.0 HT
2G DDR 400

Linux硬件平台如下:

酷睿2 T7300,主频2G
4G DDR 667

Windows平台的eclipse.ini参数为:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.linux.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
384m
–launcher.defaultAction
openFile
-vm
C:\Java\jdk1.6.0_22\jre\bin\server\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=1500
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+FailOverToOldVerifier
-Dcom.sun.management.jmxremote
-Dsun.lang.ClassLoader.allowArraySyntax=true

Linux平台的eclipse.ini参数为:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.1.R36x_v20100810
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
-vm
/usr/lib/jvm/java-6-sun/jre/lib/amd64/server/libjvm.so
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms64m
-Xmx512m
-Xss3m
-XX:PermSize=64m
-XX:MaxPermSize=512m
-XX:CompileThreshold=1500
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+FailOverToOldVerifier
-Dcom.sun.management.jmxremote
-Dsun.lang.ClassLoader.allowArraySyntax=true

红色字体部分的内容是修改或者增加的内容。经过调整后,eclipse在启动后的初始化速度以及使用过程中内存的占用情况得到了改善,内存不会一直高高在上了。并且在进行内容收集的时候也不会出现明显的停顿感了,没有再发生写代码写得正起兴,IDE突然不干了的事情。

参数解说:

  • -vm 指定使用哪个虚拟机运行eclipse。在我windows平台,使用server/jvm.dll,在Linux平台,我指定了server版本的64位虚拟机运行eclipse
  • -Xms -Xmx -Xss -XX:PermSiz -XX:MaxPermSize这几个参数就不介绍了,网上这方面的资料太多了。
  • -XX:CompileThreshold 方法或者代码片段在调用了多少次之后编译成本地代码,默认的设置是-server选项的时候10000,-client选项1500,我们这里使用了server版本的jvm运行eclipse,所以调整为1500,但是网上有些介绍设置更低的,有些设置为10;根据我的测试发现,这个值太低会大大影响eclipse的启动速度,所以我设置成了1500。
  • -XX:MaxGCPauseMillis 见名知意,垃圾回收(GC)的暂停时间,设置为10毫秒
  • -XX:MaxHeapFreeRatio 默认值就是70,这里保留了默认值。这个参数的意思是堆内存的空闲百分比
  • -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC 这两个参数要一起说,从jdk6 update 14开始,我们可以使用G1 GC进行垃圾回收,来提高性能,如果你的JDK低于这个版本,那么可以使用XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-XX:+CMSIncrementalPacing三个参数调整GC设置。关于G1垃圾回收器的详细说明请参考GarbageFirstGarbage Collection文档。
  • -XX:+UseFastAccessorMethods 优化原始类型的getter方法性能。
  • -XX:+FailOverToOldVerifier 如果新的Class校验器检查失败,则使用老的校验器。
Advertisements

Eclipse JVM 性能调优》上有1条评论

  1. Pingback引用通告: 使用JRockit JVM运行eclipse « 谢邵虎博客

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s