主要观点:Java 垃圾回收对程序员是福音,但在生产环境中可能引发问题,调优和故障排除是重要技能,需了解相关任务、术语和算法,可通过多种工具获取 GC 性能信息。
关键信息:
- 可通过命令行开关激活 GC 日志记录,不同 JVM 版本和算法日志格式可能不同。
- JDK 包含多种用于故障排除和监控的工具,如 jvisualvm 可用于监控 JVM 性能,jstat 可收集运行时统计信息,jcmd 可获取 JVM 事件。
- 除 JDK 工具外,还有外部工具如 IBM GC 和 Memory Visualizer(GCMV)和 GCeasy,GCMV 需手动选择指标较耗时,GCeasy 能在短时间内提供详细分析和建议,适合常规 GC 监控且可自动化。
重要细节: - 对于 Java 8 及更早版本,使用
-XX:+PrintGCDetails -Xloggc:<gc-log-file-path>
激活 GC 日志;对于 Java 9 及之后版本,使用-Xlog:gc*:file=<gc-log-file-path>
。 - jvisualvm 是基于 GUI 的工具,可显示运行程序信息,通过堆图和 CPU 使用率图监控 GC 情况,可请求应用执行 GC 并监控资源使用。
- jstat 有多种选项,如
-gc
获取详细 GC 统计,-gcutil
获取各内存池使用百分比和 GC 活动总结,-gccapacity
获取各内存池的最小、最大和当前大小。 - jcmd 可通过
jcmd 6504 VM.events > events.txt
获取 JVM 事件,包括 GC 信息。 - GCMV 是综合 GC 日志分析器,需手动选择指标,GCeasy 能快速提供详细分析和建议,可自动进行常规 GC 监控。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。