参考答案
常见的 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 情况。
以上,是JVM面试题【GC日志如何开启和查看 】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—