在發(fā)生Minor GC之前或辖,虛擬機會檢查老年代最大可用的連續(xù)空間是否大于新生代所有對象的總空間者填。
- 如果大于刻伊,則此次Minor GC是安全的训堆。
- 如果小于描验,則虛擬機會查看-XX:HandlePromotionFailure設(shè)置值是否允許擔(dān)保失敗。
- 如果HandlePromotionFaileure=true,那么會繼續(xù)檢測老年代最大可用連續(xù)空間是否大于歷屆晉升到老年代的對象的平均大小
- 如果大于坑鱼,則嘗試進行一次Minor GC膘流,但這次Minor GC依然是有風(fēng)險的;
- 如果小于鲁沥,則改為進行一次Full GC
- 如果HandlePromotionFailure=false,則改為進行一次Full GC
在JDK7之后呼股,HandlePromotionFailure參數(shù)不會再影響到虛擬機的空間分配擔(dān)保策略,規(guī)則變?yōu)?strong>只有老年代的連續(xù)空間大于新生代對象總大小或者大于歷次晉升的平均大小就會進行Minor GC画恰,否則進行Full GC彭谁。