GCViewer是轻量离线工具,专注JDK 7–17日志解析与可视化,提供堆使用率、GC频次、暂停时长曲线等图表,关键指标包括Max heap after full GC、Throughput、Avg Pause等。

主流 JVM GC 日志分析工具主要有 GCViewer、GCeasy、VisualVM(配合插件或日志导入)、以及命令行工具如 jstat 和 javap 辅助定位。它们不替代彼此,而是分工协作:GCViewer 和 GCeasy 专注日志文件的批量解析与可视化;VisualVM 更适合实时监控+轻量日志关联;jstat 则用于无日志场景下的即时诊断。
GCViewer:轻量、离线、图表直观
GCViewer 是最常用且免依赖的桌面型分析工具,适合本地快速打开 .log 文件看趋势。
- 下载启动:从 GitHub 获取源码或预编译 JAR(如
gcviewer-1.36.jar),运行java -jar gcviewer-*.jar - 导入日志:支持 JDK 7–17 的各类 GC 日志格式(Serial/Parallel/G1/ZGC),自动识别收集器类型和时间戳
- 关键视图:
- 图表页:显示堆使用率、GC 频次、暂停时长曲线;黑色竖线代表 Full GC,越少越好
- Summary 页:关注 Max heap after full GC(是否持续不下降)、Throughput(低于 90% 值得优化)、Total Time 和 Accumulated Pauses
- Pause 页:查看平均暂停时间(Avg Pause)和间隔(Avg pause interval);若 Full GC 平均停顿 >1s 或间隔
GCeasy:在线、智能、带调优建议
GCeasy 是基于 Web 的免费服务(gceasy.io),上传 GC 日志后自动生成报告,含问题分类和可操作建议。
- 支持自动识别 GC 原因(如
Allocation Failure、Metadata GC Threshold、G1 Humongous Allocation) - 报告中直接标出风险项:例如 “Survivor 区过小导致对象过早晋升”、“元空间增长过快建议设
-XX:MaxMetaspaceSize” - 适合团队共享分析结果,也支持私有部署(企业版)
VisualVM + 插件:实时监控 + 日志上下文联动
VisualVM 本身不直接解析 GC 日志,但可通过插件(如 GcViewer Plugin)或手动比对实现“运行态 + 日志态”交叉验证。
- 启用远程监控:JVM 启动加参数
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 - 连接后,在「Monitor」页观察堆内存曲线,与 GC 日志中的时间点对照(借助
-XX:+PrintGCDateStamps对齐) - 配合
jstat -gcutil <pid> 1s</pid>实时输出各代使用率,验证日志中 “Eden 使用率突增→Minor GC” 是否符合预期
命令行辅助:无 GUI 环境下的快速筛查
生产环境常无法安装图形工具,此时靠组合命令快速定位异常模式:
-
grep "Full GC" gc.log | wc -l:统计 Full GC 次数 -
awk '/Pause Full/{sum+=$NF} END{print sum}' gc.log:粗略估算 Full GC 总耗时(单位秒) -
jstat -gc -h10 <pid> 5s</pid>:每 5 秒输出一次 GC 统计,观察FGC(Full GC 次数)是否持续上涨 -
tail -n 100 gc.log | grep "PSYoungGen\|ParNew\|G1 Evacuation":确认当前使用的收集器及最近几次回收效果


















