常见的 GC 日志开启参数包括:
1、-Xloggc:filename,指定日志文件路径
2、-XX:+PrintGC,打印 GC 基本信息
3、-XX:+PrintGCDetails,打印 GC 详细信息
4、-XX:+PrintGCTimeStamps,打印 GC 时间戳
5、-XX:+PrintGCDateStamps,打印 GC 日期与时间
6、-XX:+PrintHeapAtGC,打印 GC 前后的堆、方法区、元空间可用容量变化
7、-XX:+PrintTenuringDistribution,打印熬过收集后剩余对象的年龄分布信息,有助于 MaxTenuringThreshold 参数调优设置
8、-XX:+PrintAdaptiveSizePolicy,打印收集器自动设置堆空间各分代区域大小、收集目标等自动调节的相关信息
9、-XX:+PrintGCApplicationConcurrentTime,打印 GC 过程中用户线程并发时间
10、-XX:+PrintGCApplicationStoppedTime,打印 GC 过程中用户线程停顿时间
11、-XX:+HeapDumpOnOutOfMemoryError,堆 oom 时自动 dump
12、-XX:HeapDumpPath,堆 oom 时 dump 文件路径
Java9 JVM 日志模块进行了重构,参数格式发生变化,这个需要知道。
GC 日志输出的格式,会随着上面的参数不同而发生变化。关注各个分代的内存使用情况、垃圾回收次数、垃圾回收的原因、垃圾回收占用的时间、吞吐量,用户线程停顿时间。
借助工具可视化工具可以更方便的分析,在线工具 GCeasy;离线版可以使用GCViewer。
如果现场环境不允许,可以使用 JDK 自带的 jstat 工具监控观察 GC 情况.
Was this helpful?
0 / 0