Young GC和Full GC分别在什么情况下会发生?

Posted tiancai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Young GC和Full GC分别在什么情况下会发生?相关的知识,希望对你有一定的参考价值。

Young GC的触发时机:Young GC其实一般就是在新生代的Eden区域满了之后就会触发,采用复制算法来回收新生代的垃圾。

Full GC的触发时机如下:

(1)发生Young GC之前进行检查,如果“老年代可用的连续内存空间” < “新生代历次Young GC后升入老年代的对象总和的平均大小”,说明本次Young GC后可能升入老年代的对象大小,可能超过了老年代当前可用内存空间
此时必须先触发一次Old GC给老年代腾出更多的空间,然后再执行Young GC。

(2)执行Young GC之后有一批对象需要放入老年代,此时老年代就是没有足够的内存空间存放这些对象了,此时必须立即触发一次Old GC。

(3)老年代内存使用率超过了92%,也要直接触发Old GC,当然这个比例是可以通过参数调整的。

概括成一句话,就是老年代空间也不够了,没法放入更多对象了,这个时候务必执行Old GC对老年代进行垃圾回收。

以上是关于Young GC和Full GC分别在什么情况下会发生?的主要内容,如果未能解决你的问题,请参考以下文章

大厂面试题:Young GC和Full GC分别在什么情况下会发生?

JVM:28 面试题:解释一下什么是Young GC和Full GC?

Minor GC(Young GC)Full GCMajor GCOld GC

可能发生Full gc 的情况

JVM之GC算法

JVM虚拟机-03JVM内存分配机制与垃圾回收算法