
與大多數工程師的想法相反,垃圾回收對應用程式有着重要影響。為了優化記憶體與垃圾回收參數,解決與記憶體相關的問題,必須分析垃圾收集日志。
啟用GC日志
啟動應用程式時設定參數啟用GC日志記錄
Java 8及早先版本
下面參數适用于JDK 8及之前所有Java版本。
例如:
Java 9及更高版本
以下參數從JDK 9開始的所有Java版本都支援。
如何分析GC日志?
設定上面的參數得到的GC日志示例:
GC日志包含豐富的資訊,但要了解GC日志并不容易,主要原因是缺少文檔,沒有足夠的文檔解釋GC日志格式。最重要的是,GC日志的格式尚未标準化。
依據JVM供應商(Oracle、IBM、HP、Azul等),Java版本(1.4、5、6、7、8、9),GC算法(串行、并行、CMS、G1、Shenandoah),以及設定的GC系統屬性(-XX:+ PrintGC,-XX:+ PrintGCDetails,-XX:+ PrintGCDateStamps,-XX:+ PrintHeapAtGC…)不同,日志有很大差異。按照這種排列群組合,很容易就有多達60多種不同的GC日志格式。
要分析GC日志,強烈建議使用日志分析工具,比如GCeasy、HPJmeter。這些工具可以解析GC日志,支援資料可視化,報告關鍵性能以及其他有用的名額。