jvm中垃圾回收分为scanvenge gc和full GC,其中full GC触发的条件可能有哪些

JVM的垃圾回收分为Scavenge GC和Full GC。Full GC主要在老年代空间满、持久代满或System.gc()被调用时触发。其他触发条件包括旧生代空间不足、Permanet Generation空间满、CMS GC时的promotion failed和concurrent mode failure,以及Minor GC晋升到旧生代的平均大小大于旧生代剩余空间。优化JVM内存分配和调整GC策略能有效减少Full GC的发生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目解析:
jvm中垃圾回收分为scanvenge gc和full GC,其中full GC触发的条件可能有哪些?

A.栈空间满

B.年轻代空间满

C.老年代满

D.持久代满

E.System.gc()

答案:C D E
解析:

新生代、老年代、持久代
在这里插入图片描述
1,新生代:(1)所有对象创建在新生代的Eden区,当Eden区满后触发新生代的Minor GC,将Eden区和非空闲Survivor区存活的对象复制到另外一个空闲的Survivor区中。(2)保证一个Survivor区是空的,新生代Minor GC就是在两个Survivor区之间相互复制存活对象,直到Survivor区满为止。
2,老年代:当Survivor区也满了之后就通过Minor GC将对象复制到老年代。老年代也满了的话,就将触发Full GC,针对整个堆(包括新生代、老年代、持久代)进行垃圾回收。
3,持久代:持久代如果满了,将触发Full GC。

full GC触发的条件
除直接调用System.gc外,触发Full GC执行的情况有如下四种。

  1. 旧生代空间不足 旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误: java.lang.OutOfMemoryError: Java heap space
    为避免以上两种状况引起的FullGC,调优时应尽量做到让对象在Minor
    GC阶段被回收、让对象在新生代多存活一段时间及不要创建过大的对象及数组。
  2. Permanet Generation空间满 PermanetGeneration中
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值