程序员社区

(JVM面试题) 如何开启和查看 GC 日志?

常见的 GC 日志开启参数包括:
-Xloggc:filename,指定日志文件路径
-XX:+PrintGC,打印 GC 基本信息
-XX:+PrintGCDetails,打印 GC 详细信息
-XX:+PrintGCTimeStamps,打印 GC 时间戳
-XX:+PrintGCDateStamps,打印 GC 日期与时间
-XX:+PrintHeapAtGC,打印 GC 前后的堆、方法区、元空间可用容量变化
-XX:+PrintTenuringDistribution,打印熬过收集后剩余对象的年龄分布信息,有助于 MaxTenuringThreshold 参数调优设置
-XX:+PrintAdaptiveSizePolicy,打印收集器自动设置堆空间各分代区域大小、收集目标等自动调节的相关信息
-XX:+PrintGCApplicationConcurrentTime,打印 GC 过程中用户线程并发时间
-XX:+PrintGCApplicationStoppedTime,打印 GC 过程中用户线程停顿时间
-XX:+HeapDumpOnOutOfMemoryError,堆 oom 时自动 dump
-XX:HeapDumpPath,堆 oom 时 dump 文件路径

Java 9 JVM 日志模块进行了重构,参数格式发生变化,这个需要知道。

GC 日志输出的格式,会随着上面的参数不同而发生变化。关注各个分代的内存使用情况、垃圾回收次数、垃圾回收的原因、垃圾回收占用的时间、吞吐量、用户线程停顿时间。

借助工具可视化工具可以更方便的分析,在线工具 GCeasy;离线版可以使用 GCViewer。

如果现场环境不允许,可以使用 JDK 自带的 jstat 工具监控观察 GC 情况。

Java面试题

赞(0) 打赏
未经允许不得转载:IDEA激活码 » (JVM面试题) 如何开启和查看 GC 日志?

一个分享Java & Python知识的社区