【JVM】空间分配担保机制

1、空间分配担保的目的?

避免FullGC过于频繁。

2、JDK 6 Update 24之前

在发生Minor GC之前,虚拟机必须先检查老年代最大可用的连续空间是否大于新生代所有对象总空间,如果这个条件成立,那这一次Minor GC可以确保是安全的。如果不成立,则虚拟机会先查看-XX:HandlePromotionFailure参数的设置值是否允许担保失败(HandlePromotion Failure);如果允许,那会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试进行一次Minor GC,尽管这次Minor GC是有风险的;如果小于,或者-XX:HandlePromotionFailure设置不允许冒险,那这时就要改为进行一次FullGC。
在这里插入图片描述

3、在JDK 6 Update 24之后

(1)JDK 6 Update 24之后不再使用-XX:HandlePromotionFailure参数。
(2)JDK 6 Update 24之后的规则变为只要老年代的连续空间大于新生代对象总大小或者历次晋升的平均大小,就会进行Minor GC,否则将进行Full GC。
在这里插入图片描述

4、参考资料

《深入理解Java虚拟机:JVM 高级特性与最佳实践(第3版)》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章