#设置堆内存为1024m #设置年轻代大小为512m,默认是堆内存的1/3 #设置初始的Metaspace大小为64m
java -jar -XX:+UseParallelGC -XX:+UseParallelOldGC -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MetaspaceSize=64m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:./gc-2.log -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.200.129 itcast-gc-demo-1.0-SNAPSHOT.jar
次要gc fullgc次数减少
# 采用G1
java -jar -XX:+UseG1GC -Xmx1024m -XX:MetaspaceSize=64m -XX:MaxGCPauseMillis=100 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:./gc-3.log -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.200.129 itcast-gc-demo-1.0-SNAPSHOT.jar
此时发现已经没有fullgc了
总结
吞吐量 90%以上
GC暂停平均时间100ms以内
GC的持续时间在30-60ms以内
尽量没有fullGC
MetaspaceSize一般是64M
堆空间可以设置成内存的1/4
采用G1垃圾收集器
尽量使GC的原因并非内存分配不足 一般是G1 疏散暂停
youngGC回收字节最多,无fullGC