JVM面試--full gc太過頻繁該如何處理
阿新 • • 發佈:2018-12-12
監控工具:jvisualVM、VisaulVM、jprofiler
JVM優化書籍:《Java效能優化權威指南》、《深入理解java虛擬機器》
1.年輕代空間不足 2.per Gen(永久代)空間滿 3.CMS GC時出現promotion failed和concurrent mode failure 4.統計得到的Minor GC晉升到舊生代的平均大小大於舊生代的剩餘空間等
結論:
Full GC本身是好的,可以清除老年代的垃圾,但是如果Full GC發生的頻率高了,就會影響效能,同時意味著系統記憶體分配機制出現問題。 因為Full GC本身執行時間較長(甚至超過1秒),而且除非採用G1 GC,否則其它的GC方式都會或多或少掛起所有執行緒執行(Stop-the-world),如果Full GC頻繁發生,系統被掛起的次數就會增加,響應時間就會變慢。 同時,Full GC頻繁發生,意味著你的記憶體分配機制存在問題,也許是記憶體洩露,有大量記憶體垃圾不斷在老年代產生;也許是你的大物件(快取)過多;也有可能是你的引數設定不好,minor GC清理不掉記憶體,導致每次minor GC都會觸發Full GC;還有可能是你的老年代大小引數設定錯誤,老年代過小等等原因