通過前面的學(xué)習(xí),我們發(fā)現(xiàn) GC 日志量很大,人工分析太消耗精力了。由于各種 GC 算法的復(fù)雜性,它們的日志格式互相之間不太兼容。
有沒有什么工具來減少我們的重復(fù)勞動呢? 這種輪子肯定是有現(xiàn)成的。比如 GCEasy、GCViwer 等等。
這一節(jié)我們就開始介紹一些能讓我們事半功倍的工具。
GCEasy 工具
GCEasy 工具由 Tier1app 公司 開發(fā)和支持,這家公司主要提供3款分析工具:
- GCEasy,訪問地址:https://gceasy.io/,是一款在線的 GC 日志分析工具,支持各種版本的 GC 日志格式。
- FastThread,官網(wǎng)地址:https://fastthread.io/,線程分析工具,后面我們專門有一節(jié)課程會進(jìn)行介紹。
- HeapHero,官網(wǎng)地址:https://heaphero.io/,顧名思義,這是一款 Heap Dump 分析工具。
其中 GCEasy 可用來分析定位GC和內(nèi)存性能問題,支持以下三種模式:
- 官方網(wǎng)站在線分析(免費(fèi)),我們主要介紹這種方式
- API 接口調(diào)用(付費(fèi)計劃)
- 本地安裝(企業(yè)付費(fèi))
特性介紹
作為一款商業(yè)產(chǎn)品,分析能力和結(jié)果報告自然是棒棒的。
- 可以分析 GC 日志和 JStat 日志
- 支持上傳文件的方式(免費(fèi))
- 支持粘貼日志文本的方式(免費(fèi))
- 支持下載結(jié)果報告 *(付費(fèi)方案)
- 支持分享鏈接(免費(fèi)】
- 支持 API 調(diào)用的方式 *(付費(fèi)方案)
- 企業(yè)版支持本地安裝 *(企業(yè)付費(fèi))
- 付費(fèi)方案可以免費(fèi)試用:就是說結(jié)果現(xiàn)在也是可以試用下載的
測試案例
我們這里依然使用前面演示的示例代碼,稍微修改一下,讓其執(zhí)行 30 秒左右。
假設(shè)程序啟動參數(shù)為:
-XX:+UseParallelGC
-Xms512m
-Xmx512m
-Xloggc:gc.demo.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
然后我們就得到了一個 GC 日志文件 gc.demo.log。
在線使用示例
打開頁面 https://gceasy.io/,選擇上傳文件或者粘貼文本:
image
比如使用我們前面生成的 gc.demo.log 文件,然后點(diǎn)擊頁面上的分析按鈕,就可以生成分析報告。
如果日志內(nèi)容很大,我們也可以粘貼或者上傳一部分 GC 日志進(jìn)行分析。
1. 總體報告
image
可以看到檢測到了內(nèi)存問題。
2. JVM 內(nèi)存大小分析
image
這里有對內(nèi)存的分配情況的細(xì)節(jié)圖表。
3. GC 暫停時間的分布情況