GC调优实战

1.怎么调优

         调优的一般步骤:①首先收集gc日志,②分析日志中的关键性能指标,③分析GC原因,调优JVM参数。

         衡量GC的两个指标:①吞吐量 ②响应时间。理想情况下是高吞吐量,低响应时间,但现实往往两个参数是相悖的。

         高吞吐量适合场景:科学计算,后台处理等弱交互场景。

         高响应时间适合场景:对响应时间有要求的场景。

         GC分析工具:

            ①gceasy,在线使用。

           ②GCViewer,本文使用它进行分析调优(下载地址:https://download.csdn.net/download/u014172271/10624430)。

2.G1垃圾回收器

       1.1 初始参数设置

PARALLEL_OPTION="-xx:+UseParallelGC -XX:+UseParalleloldGC -XX:MaxGCPauseMills=100 -XX:GCTimeRatio=99 -XX:YoungGenerationSizeIncrement=30"

CMS_OPTION="-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=92 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5"

G1_OPTION="-xx:+UseG1GC -Xms128M -Xmx128 -XX:MetaspaceSize=64M -XX:MaxGCPauseMillis=100 -XX:+UseStringDeduplication -XX:StringDeduplicationAgeThreshold=3"

 

JAVA_OPTS="$JAVA_OPTS  -XX:+UseG1GC  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/ -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:$CATALINA_HOME/logs/gc.log -XX:+PrintHeapAtGC  -XX:+PrintTenuringDistribution"

        

2.2 垃圾回收结果:

GC调优实战_第1张图片

 

GC调优实战_第2张图片

 

GC调优实战_第3张图片

 

 

我们可以看到吞吐量99.76, 最小停顿时间0.00004s,最大停顿时间0.03549s,平均停顿时间0.0007s,GC13次

我们要做的事情:调整Metadata,tenured heap21M,

修改JAVA_OPTS:

JAVA_OPTS="$JAVA_OPTS  -XX:+UseG1GC -XX:MetaspaceSize=50M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/ -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:$CATALINA_HOME/logs/gc.log -XX:+PrintHeapAtGC  -XX:+PrintTenuringDistribution"

(2)第二次:

GC调优实战_第4张图片

我们可以看到吞吐量99.8, 最小停顿时间0.00004s,最大停顿时间0.03446s,平均停顿时间0.00049s,GC7次

 

(3)这次我们调整初始堆大小

JAVA_OPTS="$JAVA_OPTS  -XX:+UseG1GC -XX:MetaspaceSize=50M -Xms128M -Xms128M -XX:MaxGCPauseMillis=100 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_HOME/logs/ -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:$CATALINA_HOME/logs/gc.log -XX:+PrintHeapAtGC  -XX:+PrintTenuringDistribution"

GC调优实战_第5张图片

我们可以看到吞吐量99.74, 最小停顿时间0.00003s,最大停顿时间0.02183s,平均停顿时间0.00055s,GC10次。

 

你可能感兴趣的:(java虚拟机调优)