1、 原jvm参数设置如下
-server -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:Server1GC.log –Xms1568M –Xmx2048M -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC
2、原GC图如下:
从gc图看到,需要调优点为:
(1) Gc频率很高
3、尝试优化JVM(例一)
-server -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:Server1GC.log –Xms3072M –Xmx3072M -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xmn768m -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSScavengeBeforeRemark
4、得到的gc情况(例一)
分析:增大了年轻代,gc减少了,但是full gc增多了。这种情况最好是让对象在年轻代时间长一点,可以使用-XX:SurvivorRatio或者-XX:MaxTenuringThreshold。得到下面例二
5、调优的JVM参数(例二)
-server -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:Server1GC.log –Xms3072M –Xmx3072M -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Xmn512m -XX:SurvivorRatio=2 -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSScavengeBeforeRemark
6、调优后Gc图(例二)
可见,例二就是我们要到调优JVM。