jvm学习之空间分配担保机制

JVM空间分配担保机制定理定义整理笔记

JVM使用分代收集算法,将堆内存划分为年轻代、年老代

分别采取不同的垃圾回收算法

空间担保指的是老年代进行空间分配担保

空间分配担保概念:

在发生Minor GC之前,虚拟机会检测老年代最大可用的连续空间是否大于新生代的所有对象的总空间。

         大于->此次Minor GC (young GC) 是安全的

         小于->虚拟机会查看HandlePromotionFailure设置值是否允许担保失败

                  HandlePromotionFailure=true -> 则继续检查老年代最大可用连续空间是否大于历次晋升到老年代的对象的平均大小

                                                                     大于 -> 尝试进行一次Minor GC, 但这一次Minor GC依然是有风险的

                                                                     小于 -> 则改为进行一次Full GC

                  HandlePromationFailure=false -> 则改为进行一次Full GC

为什么要进行空间担保

        因为新生代采取复制收集算法,假设大量对象在Minor GC后仍然存活, 而Survivor空间比较小,这是就需要老年代进行分配担保,
前提是老年代有足够个空间来容纳这些对象,但一共有多少对象在内存回收后存活下来是不可预知的。因此只好去取之前每次垃圾回收后晋升到
年老代的对象大小的平均值作为参考数据。用这个平均值与年老代剩余空间进行比较,来决定是否进行Full GC让老年代腾出更多的空间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值