通过前面的学习,我们发现 GC 日志量很大,人工分析太消耗精力了。由于各种 GC 算法的复杂性,它们的日志格式互相之间不太兼容。
有没有什么工具来减少我们的重复劳动呢? 这种轮子肯定是有现成的。比如 GCEasy、GCViwer 等等。
这一节我们就开始介绍一些能让我们事半功倍的工具。
GCEasy 工具
GCEasy 工具由 Tier1app 公司 开发和支持,这家公司主要提供3款分析工具:
- GCEasy,访问地址:https://gceasy.io/,是一款在线的 GC 日志分析工具,支持各种版本的 GC 日志格式。
- FastThread,官网地址:https://fastthread.io/,线程分析工具,后面我们专门有一节课程会进行介绍。
- HeapHero,官网地址:https://heaphero.io/,顾名思义,这是一款 Heap Dump 分析工具。
其中 GCEasy 可用来分析定位GC和内存性能问题,支持以下三种模式:
- 官方网站在线分析(免费),我们主要介绍这种方式
- API 接口调用(付费计划)
- 本地安装(企业付费)
特性介绍
作为一款商业产品,分析能力和结果报告自然是棒棒的。
- 可以分析 GC 日志和 JStat 日志
- 支持上传文件的方式(免费)
- 支持粘贴日志文本的方式(免费)
- 支持下载结果报告 *(付费方案)
- 支持分享链接(免费】
- 支持 API 调用的方式 *(付费方案)
- 企业版支持本地安装 *(企业付费)
- 付费方案可以免费试用:就是说结果现在也是可以试用下载的
测试案例
我们这里依然使用前面演示的示例代码,稍微修改一下,让其执行 30 秒左右。
假设程序启动参数为:
-XX:+UseParallelGC
-Xms512m
-Xmx512m
-Xloggc:gc.demo.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
然后我们就得到了一个 GC 日志文件 gc.demo.log。
在线使用示例
打开页面 https://gceasy.io/,选择上传文件或者粘贴文本:
比如使用我们前面生成的 gc.demo.log 文件,然后点击页面上的分析按钮,就可以生成分析报告。
如果日志内容很大,我们也可以粘贴或者上传一部分 GC 日志进行分析。
1. 总体报告
可以看到检测到了内存问题。
2. JVM 内存大小分析
这里有对内存的分配情况的细节图表。
3. GC 暂停时间的分布情况