@delight
2014-07-30T12:57:54.000000Z
字数 1816
阅读 4259
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不必明确设置新生代大小,其自动调优也十分可靠,对于停顿时间往往在长时间运行后可以达到预期效果;对吞吐量优先的应用,可能不是那么明显。