JVM G1源碼分析和調優
G1是目前最成熟的垃圾回收器,已經廣泛應用在眾多公司的生產環境中。我們知道,CMS作為使用最為廣泛的垃圾回收器,也有令人頭疼的問題,即如何對其眾多的參數進行正確的設置。G1的目標就是替代CMS,所以在設計之初就希望降低程序員的負擔,減少人工的介入。但這并不意味著我們完全不需要了解G1的原理和參數調優。筆者在實際工作中遇到過一些因參數設置不正確而導致GC停頓時間過長的問題。但要正確設置參數并不容易,這里涉及兩個方面:第一,需要對G1的原理熟悉,只有熟悉G1的原理才知道調優的方向;第二,能分析和解讀G1運行的日志信息,根據日志信息找到G1運行過程中的異常信息,并推斷哪些參數可以解決這些異常。本書嘗試從G1的原理出發,系統地介紹新生代回收、混合回收、FullGC、并發標記、Refine線程等內容;同時依托于jdk8u的源代碼介紹Hotspot如何實現G1,通過對源代碼的分析來了解G1提供了哪些參數、這些參數的具體意義;最后本書還設計了一些示例代碼,給出了G1在運行這些示例代碼時的日志,通過日志分析來嘗試調整參數并達到性能優化,還分析了參數調整可能帶來的負面影響。
·10.8萬字