空间分配担保
空间分配担保就是担保老年代的内存足够多,新生代中的对象能够存放
- 在发生YGC(Minor GC)之前,虚拟机必须先检查老年代最大可用得连续空间是否大于新生代所有对象总空间
- 如果条件成立,那么这一次YGC就是安全的。
- 如果不成立,则虚拟机会先查看 -XX:HandlePromotionFailure参数的设置值是否允许担保失败;
- 如果允许,那会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代的平均大小
- 如果大于,将尝试进行YGC,尽管这次YGC有风险
- 如果小于,那么就需要进行Full GC
- 如果不允许,则进行Full GC
- 如果允许,那会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代的平均大小
谁进行空间担保
老年代需要能存放年轻代中的对象,所以是老年代进行空间分配担保