Young GC的觸發時機:Young GC其實一般就是在新生代的Eden區域滿了之后就會觸發,采用復制算法來回收新生代的垃圾。
Full GC的觸發時機如下:
(1)發生Young GC之前進行檢查,如果“老年代可用的連續內存空間” < “新生代歷次Young GC后升入老年代的對象總和的平均大小”,說明本次Young GC后可能升入老年代的對象大小,可能超過了老年代當前可用內存空間
此時必須先觸發一次Old GC給老年代騰出更多的空間,然后再執行Young GC。
(2)執行Young GC之后有一批對象需要放入老年代,此時老年代就是沒有足夠的內存空間存放這些對象了,此時必須立即觸發一次Old GC。
(3)老年代內存使用率超過了92%,也要直接觸發Old GC,當然這個比例是可以通過參數調整的。
概括成一句話,就是老年代空間也不夠了,沒法放入更多對象了,這個時候務必執行Old GC對老年代進行垃圾回收。