GC 日志分析工具GChisto

IsiCrockett 8年前

来自: http://blog.csdn.net/wenniuwuren/article/details/50760259


零. 简介
《Java 性能优化权威指南》介绍了一款分析 GC 日志的离线分析工具, 不过官网上没有下载的地方, 需要自己从 SVN 上拉下来编译。 GChisto 以表格和图形化的方式展示 GC 次数、 持续时间等, 提高了分析 GC 日志的效率。


一. 实践
编译成功后, 直接 java -jar 运行起来, 把 GC 日志 .log 文件 add 到 GChisto, GChisto 加载日志可能运行比较久, 需要等待一会。

1. 导入成功, 切到 GC Pause Stats 选项卡, 可以大致看下 GC 的次数、 GC 的时间、 GC 的开销、 最大 GC 时间和最小 GC 时间等 


垃圾收集的开销(Overhead)表示垃圾收集的调优程度。 一般情况, 并发垃圾收集的开销应该小于 10%, 也有可能达到 1% ~ 3%。



2. 切到 GC Pause Distribution 选项卡, 可以查看 GC 停顿的详细分布, x 轴表示垃圾收集停顿时间, y 轴表示是停顿次数。  

上图可以看出有一次 remark 时间是 3.6 秒左右, 这个就值得注意下当时发生了什么, 是应用问题, 还是 JVM 参数需要调优。




3. 切换到 GC Timeline 选项卡, 可以显示整个时间线上的垃圾收集, 以便于按时间去查找应用日志(tomcat 日志等), 去了解峰值时系统发生了什么。 

不过这个工具似乎没怎么维护了, 存在不少 bug, 使用过程发现识别不了 JDK 1.7 GC 日志的 Young GC, 还有一些 NullPointer 错误。 整体来说, 只能观察某些参数