JVM空间分配担保流程

本文详细介绍了JVM在进行MinorGC前的空间分配担保流程,包括检查老年代最大连续空闲空间、HandlePromotionFailure参数的判断以及FullGC的情况。在不安全的情况下,JVM可能会进行FullGC以确保有足够的空间进行对象晋升,或者冒险进行MinorGC,以应对可能的内存溢出问题。
摘要由CSDN通过智能技术生成

JVM空间分配担保流程

  • 在进行Minor GC之前,JVM首先会检查【老年代最大连续空闲空间】是否大于【当前新生代所有对象占用的总空间】
  • 如果是,那么说明此次的Minor GC是安全的,可以放心的进行Minor GC
  • 如果不是,则JVM会去查看HandlePromotionFailure参数的值是否为true(表示是否允许担保失败)
  • 如果不允许担保失败,则此时就会进行一次Full GC 以腾出老年代更多的空间
  • 如果允许担保失败,则此时JVM会去检查【老年代最大连续空闲空间】是否大于【历次晋升到老年代的对象的平均大小】
  • 如果小于,则JVM此时会进行一次Full GC以便于腾出更多的老年代空间
  • 如果大于,则JVM会冒险进行一次Minor GC(为什么说是冒险呢? 因为有可能Minor GC后新生代所有的对象都还存活,并且survivor区无法容纳下这些对象,那么这些对象就会被晋升到老年代,导致老年代空间被填满)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值