GC 日誌分析工具 —— GChisto
阿新 • • 發佈:2019-01-27
零. 簡介
《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 錯誤。 整體來說, 只能觀察某些引數