杜天微 2012-3-29
系统信息: XP SP2,E6700 双核3.2G,可用内存 2.96G
为了提高工作效率,本人尝试优化Eclipse和GameServer的启动参数,由于时间有限,而且这些工作是几周之前做的,很多步骤已经记不清了,所以大概简述调优思想,请大家提出意见。
Eclipse:
下面的优化过程是在安装加密软件之前做的,当时把Eclipse启动时间从将近20秒优化到十秒以内(主观感受)。加密以后。。。仍然比以前没优化的时候快些。
1 Eclipse.ini原文:
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
修改后如下:
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
150M
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vm
C:/Program Files/Java/jdk1.6.0_27/jre/bin/server/jvm.dll
--launcher.library
E:\DuTianwei\eclipsejee32\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-startup
E:\DuTianwei\eclipsejee32\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms200m
-Xmx824m
-Xverify:none
-Xmn60m
-XX:MaxPermSize=150m
-XX:PermSize=80m
-XX:+DisableExplicitGC
-server
原因如下:
-vm
C:/Program Files/Java/jdk1.6.0_27/jre/bin/server/jvm.dll
这里设置调用jdk中的jvm.dll,因为我机器上同时装有jre,所以默认使用的jvm是jre中的,为了后面启用Server模式,所以这里必须指定jdk的jvm
-Xms200m
指定最小堆容量200MB
因为Eclipse打开工作区后堆占用波动在150MB上下
按照默认40m的话,启动过程中,堆会经常不够用,每次都要申请更大,最后稳定在180左右,所以干脆让他启动就给200m加快了启动时间
-Xmx824m
最大堆容量。这个值我还真忘了,好像就是给了一个较大的值。
-Xverify:none
取消字节码验证。经过长期工作情况基本可以确定目前所有工程第三方包和Eclipse本身都没有字节码错误和安全问题,所以可以取消验证来换取类加载速度。
-Xmn60m
年轻代容量。经过一定时间的观察,发现Eden GC的频率和容量成反比、每次GC耗费的时间和容量成正比,60这个值是当时经过试验感觉比较平衡的一个数。
-XX:MaxPermSize=150m
最大Perm区容量。貌似当时就给了一个较大的值,约为初始PermSize的两倍。
-XX:PermSize=80m
初始Perm容量。从上图可以看到这个占用基本稳定在50左右,但是进行某些操作时,会增加,但很少有机会超过80m,为了减少jvm向系统申请新的空间的次数,这里给个80。这个值受加载类的数量影响,所以比较稳定。
-XX:+DisableExplicitGC
停用程序中明确调用System.gc()对gc执行的建议,减少gc次数,完全依靠虚拟机自己判断执行gc。
-server
使用server模式,虽然降低启动速度,但是增大了字节码编译为本地代码的比例,能提高运行效率,而且server模式的垃圾回收是和程序并行、并发执行,可以增加程序吞吐量,降低gc等待时间、提高程序运行效率。