gcviewer 是轻量级开源工具,用于解析和可视化 jvm gc 日志;支持多格式日志,生成堆内存趋势、gc 频率、停顿时间等图表,帮助定位内存瓶颈与 gc 异常。

GCViewer 是一个轻量级开源工具,专门用于解析和可视化 JVM 的 GC 日志。它不依赖 JDK 版本,支持多种 GC 日志格式(如 `-XX:+PrintGCDetails` 生成的日志),能快速生成堆内存变化、GC 频率、停顿时间等图表,帮你定位内存瓶颈或 GC 异常。
准备 GC 日志文件
确保 JVM 启动时已开启详细 GC 日志输出。推荐使用以下参数(以 JDK 8/11 为例):
- JDK 8 及以前:`-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M`
- JDK 9+(统一日志框架):`-Xlog:gc*:gc.log:time,tags,level -Xlog:safepoint:gc_safepoint.log`(注意 GCViewer 当前对部分新格式支持有限,建议用 `-Xlog:gc*` 或回退到 `-XX:+PrintGCDetails` 兼容模式)
运行应用一段时间后,获取生成的 gc.log(纯文本,无压缩、无乱码,UTF-8 编码最佳)。
下载并运行 GCViewer
访问 GitHub 官方仓库 下载最新版 JAR 包(如 gcviewer-1.37.jar)。无需安装,直接运行:
- 命令行启动:
java -jar gcviewer-1.37.jar - 图形界面打开后,点击 File → Load,选择你的
gc.log - 若日志格式识别失败,可尝试勾选 “Try to load even if format is unknown”,或检查日志是否含时间戳、内存数据等关键字段
看懂核心可视化图表
加载成功后,主界面默认显示 4 个关键图表,重点关注:
- Heap Usage:堆内存使用趋势线(蓝色实线为已用堆,红色虚线为最大堆)。观察是否持续攀升、频繁触顶后 GC,判断是否存在内存泄漏
- Pause Times:每次 GC 停顿时间柱状图。Y 轴单位是毫秒,留意是否有异常长停顿(如 >200ms),结合 GC 类型(Young/Old)排查原因
- GC Duration vs Time:GC 持续时间随时间变化曲线。如果曲线密集上扬,说明 GC 越来越吃力,可能需调大堆或优化对象生命周期
- GC Events:按类型统计 GC 次数(Minor GC / Full GC)。Full GC 过多(尤其非预期触发)是严重信号,需检查大对象、永久代/元空间溢出或 System.gc() 调用
辅助分析技巧
GCViewer 还提供实用功能提升分析效率:
- 右键图表 → Export as PNG 导出图片,方便写报告或团队同步
- 点击顶部 Summary 标签页,查看关键指标汇总:总 GC 次数、平均停顿、吞吐量(
1 - (total pause time / total runtime))、最大停顿等 - 用 Filter 功能筛选特定时间段(如某次 Full GC 前后 5 分钟),缩小分析范围
- 对比多个日志:同时加载不同配置下的 gc.log,切换标签页横向比对,验证调优效果
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











