@delight
2014-07-30T04:57:54.000000Z
字数 1816
阅读 4481
java gc jvm
0.增加GC相关选项:
-verbose:gc-XX:+UseGCLogFileRotation-XX:NumberOfGCLogFiles=5-XX:GCLogFileSize=512K-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintGCDateStamps-XX:+PrintTenuringDistribution-XX:+PrintGCApplicationStoppedTime-Xloggc:/var/app/log/Push-server/gc.log
-XX:SurvivorRatio=xx来控制,对应的大小为-Xmn<value>/(ratio+2);-XX:MaxTenuringThreshold=<n>来指定晋升阈值(年龄),n为0~15之间;-XX:CMSInitiatingOccupancyFraction=<percent>的值;-XX:+UseCMSInitiatingOccupancyOnly,强制使用该比例,该比例的大小应该大于老年代占用空间和活跃数据大小之比,一般而言老年代大小*该比例>1.5*老年代活跃数据大小;-XX:+ExplicitGCInvokesConcurrentAndUnloadsCloasses可以使用CMS进行显式垃圾回收(System.gc());通过-XX:+DisableExplicitGC关闭显示垃圾回收(慎用);-XX:+CMSClassUnloadingEnabled打开永久带垃圾回收,使用-XX:+CMSPermGenSweepingEnabled打开CMS对永久带的扫描;使用-XX:CMSInitiatingPermOccupancyFraction=<perscent>激活回收比例阈值;-XX:ParallelGCThreads=<n>控制扫描线程数;使用-XX:+CMSScavengeBeforeRemark强制重新标记前进行一次MinorGC;如果由大量的引用对象或可终结对象要处理,使用-XX:+ParallelRefProcEnabled;
-d64-Xmx5g-Xms5g-XX:PermSize=100m-XX:MaxPermSize=100m-XX:MaxDirectMemorySize=1g-XX:+UseG1GC-XX:MaxGCPauseMillis=80
G1不必明确设置新生代大小,其自动调优也十分可靠,对于停顿时间往往在长时间运行后可以达到预期效果;对吞吐量优先的应用,可能不是那么明显。
