空间分配担保
- 在年轻代发生Minor Gc之前,虚拟机会检查年老代最大连续可用空间是否大于新生代对象的总空间,如果大于,则说明是安全的,可以进行MinorGc
- 如果年老代最大连续可用空间小于新生代对象的总空间,则需要检查下是否允许空间分配担保失败,如果设置为允许,那么虚拟机会继续检查老代最大连续可用空间是否大于历次晋升到老年代对象的平均大小,如果大于,则说明可以进行GC,但是本次GC是有风险的,由于允许空间分配担保,所以可以进行GC
- 如果老代最大连续可用空间小于历次晋升到老年代对象的平均大小 或者 设置不允许空间分配担保,则在Minor GC之前会进行一次Full GC
- 若允许空间分配担保,也是有可能导致担保失败(本次新生代进入年老代的数量暴增),此时会进行一次Full GC
`