- 关于JVM 17 的优化指南的总结笔记
示例
-Xms32m -Xmx32m -Xlog:gc*
-Xms32m -Xmx32m -Xlog:gc*:logs/gc.log:time
-Xms1g -Xmx2g -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 -Xlog:gc*:logs/gc.log:time
-Xms512m -Xmx1g -XX:+UseZGC -Xlog:gc*:logs/gc.log:time
-Xms512m -Xmx1g -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xlog:gc*:logs/gc.log:time
-Xms512m -Xmx1g -Xlog:gc*:file=logs/gc.log:time,level,tags
-Xms512m -Xmx1g -XX:+UseParallelGC -Xlog:gc*:logs/gc.log:time
-Xms512m -Xmx1g -XX:+UseConcMarkSweepGC -Xlog:gc*:logs/gc.log:time Unrecognized VM option 'UseConcMarkSweepGC'
-Xms512m -Xmx1g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xlog:gc*:logs/gc.log:time
-Xms512m -Xmx1g -XX:+UseShenandoahGC -Xlog:gc*:logs/gc.log:time Option -XX:+UseShenandoahGC not supported
-Xss512k -Xlog:gc*:logs/gc.log:time
-Xms512m -Xmx1g -XX:+DoEscapeAnalysis -Xlog:gc*:logs/gc.log:time
常见的JVM调优参数
-Xms512m 设置初始堆内存大小。
-Xmx1g 设置最大堆内存大小。
-XX:NewRatio=2 设置新生代与老年代的比率。
-XX:SurvivorRatio=8 设置Eden区与Survivor区的比率。
-XX:MaxTenuringThreshold 设置新生代垃圾进入老年代的年龄阈值。
-XX:MetaspaceSize 设置初始元空间大小。
-XX:MaxMetaspaceSize 设置最大元空间大小。
-XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=128m
-XX:+UseG1GC 启用G1垃圾收集器。
-XX:MaxGCPauseMillis=200 设置最大暂停时间目标(GC引起的暂停时间短于200毫秒)来优化GC性能
-XX:+DoEscapeAnalysis 启用逃逸分析
PrintGCDateStamps 在 java17 中已弃用
对于 JDK 11 及以上版本,PrintGCDateStamps 已被弃用,可以使用新的日志记录参数 -Xlog:gc*:logs/gc.log:time
关于MetaspaceSize的说明
MetaspaceSize 表示的并非是元空间的大小,它的含义是:主要控制matesaceGC发生的初始阈值,也就是最小阈值。
也就是说当使用的matespace空间到达了MetaspaceSize的时候,就会触发Metaspace的GC。
MaxMetaspaceSize表示的是保证committed的内存不会超过这个值,一旦超过这个值就会触发GC。
注意:在jvm启动的时候,并不会分配MaxMetaspaceSize这么大的一块内存出来,metaspace是可以一直扩容的,直到到达MaxMetaspaceSize。