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。
本文通过实例展示了如何针对高频率的垃圾回收(GC)进行JVM调优,通过调整堆大小、年轻代大小及垃圾回收算法等参数,有效降低了GC频率,并改善了系统的运行效率。
14万+

被折叠的 条评论
为什么被折叠?



