JVM中Minor GC與 Full GC 的觸發條件

1. Minor GC(新生代GC)的觸發條件數組

當Eden區滿時,觸發Minor GC。spa

2. Full GC(老年代GC)的觸發條件對象

(1)直接調用System.gc內存

(2)老年代空間不足(新生代存活下來的對象轉入、大對象的建立等引發)反射

        調優策略:gc

  • 儘可能作到讓對象在Minor GC階段被回收
  • 讓對象在新生代多存活一段時間
  • 不要建立過大的對象及數組

(3)方法區空間不足(系統中要加載的類、反射的類和調用的方法較多等致使)程序

        調優策略:方法

  • 增大方法區空間
  • 轉爲使用CMS GC

(4)Minor GC 時,survivor放不下,對象只能放入老年代,而此時老年代也放不下統計

        調優策略:時間

        增大survivor space、老年代空間

(5)經過Minor GC後進入老年代的平均大小大於老年代的連續可用內存(Minor GC 時會作一個判斷,統計以前晉升到老年代的對象的平均大小)

例如程序第一次觸發Minor GC後,有6MB的對象晉升到老年代,那麼當下一次Minor GC發生時,首先檢查老年代的剩餘空間是否大於6MB,若是小於6MB,則執行Full GC。

相關文章
相關標籤/搜索