JVM中什么情况下会触发full gc?

提问者:帅平 问题分类:面试刷题
JVM中什么情况下会触发full gc?
Jvm
1 个回答
离不开天空的云
离不开天空的云
触发Full GC的条件有:
1、当晋升到老年代的对象大于了老年代的剩余空间时,就会触发FGC
2、老年代的内存使用率达到了一定阈值(可通过参数调整),直接触发FGC。
3、空间分配担保:在YGC之前,会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果小于,说明YGC是不安全的,则会查看参数 HandlePromotionFailure 是否被设置成了允许担保失败,如果不允许则直接触发Full GC;如果允许,那么会进一步检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果小于也会触发 Full GC。
4、Metaspace(元空间)在空间不足时会进行扩容,当扩容到了-XX:MetaspaceSize 参数的指定
5、System.gc() 或者Runtime.gc() 被显式调用时,触发FGC。
发布于:3个月前 (04-02) IP属地:四川省
我来回答