- 什麼時候會嘗試觸發Minor GC
新生代內存區域基本快滿了,再次分配對象的時候,發現空間不足
- 觸發Minor GC之前會檢查老年代大小?
- 檢查老年代可用內存空間,是否大於新生代所有對象的總大小,如果大於新生代所有對象,就可以發起Minor GC
- 老年代可用空間小於新生代的所有對象大小,檢查'-XX:HandlePromotionFailure'的參數是否設置,如果設置了,就檢查老年代的內存大小,是否大於之前每一次Minor GC後進入老年代對象的平均大小,如果大於就進行Minor GC
- 如果沒有設置'-XX:HandlePromotionFailure'參數,此時就會觸發一次Full GC,儘量騰出一些空間,然後再執行Minor GC
- 什麼時候在Minor GC之前會觸發一次Full GC
Minor GC後的對象太多,無法放入 survivor區
- Full GC的算法是什麼?
標記整理算法
- Minor GC之後可能對應哪幾種情況?
- 剩餘存活的對象大小,小於survivor區,此時存活對象進入survivor區
- 剩餘存活的對象大小,大於survivor區,但是小於老年代可用空間,直接進入老年代
- 剩餘存活的對象大小,大於survivor區,大於老年代可用空間,就會觸發Full GC
- 哪些情況下Minor GC的對象會進入老年代?
- Minor GC 15次的對象會進入老年代,就是說超過年齡的對象
- 大對象
- Minor GC之後剩下的對象超過survivor區大小