JVM空间分配担保流程

Posted wen-pan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM空间分配担保流程相关的知识,希望对你有一定的参考价值。

JVM空间分配担保流程

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

以上是关于JVM空间分配担保流程的主要内容,如果未能解决你的问题,请参考以下文章

jvm04

什么是空间分配担保策略?

垃圾回收器垃圾回收算法空间分配担保

垃圾回收器垃圾回收算法空间分配担保

三:JVM对象创建与内存分配机制深度剖析

JVM对象内存分配流程