MinorGC,MajorGC,FullGC

MinorGC:
绝大多数被创建的对象会被分配到新生代,由于大部分对象在创建后会很快变得不可达,所以很多对象被创建在新生代,然后消失。对象从新生代消失的过程称之为MinorGC。一般当Eden区的空间不够时,会触发MinorGC。
MajorGC:
老年代存储着一些生命周期长的对象。老年代所占空间比新生代大,发生在老年代上的GC比新生代少得多。对象从老年代消失的过程,称之为MajorGC。当老年代空间不够时,会触发MajorGC。
FullGC:
FullGC是清理整个对空间包括老年代和新生代。许多MajorGC都是MinorGC触发的,所以很多情况下这两种GC分离是不太可能的。当两者都发生时,可以看成发生了FullGC。从实际操作来看,FullGC的触发场景有:
1. System.gc(),建议jvm进行FullGC。
2. 老年代空间不足。
3. 永久代空间不足,现代垃圾收集机制在进行FullGC时会清理部分永久代空间。
4. CMS GC时出现promotion failed和concurrent mode failure,promotion failed是在进行Minor GC时,survivor space放不下,对象只能放入老年代,而此时老年代也放不下造成的;concurrent mode failure是在执行CMS GC的过程中同时有对象要放入老年代,而此时老年代空间不足造成的(有时候“空间不足”是CMS GC时当前的浮动垃圾过多导致暂时性的空间不足)。
5. 统计得到Minor GC后晋升到老年代的平均大小大于老年代的剩余空间。此时老年代可能空间不足,也会进行FullGC。
6. 堆中分配很大的对象,此时对象会直接进入老年代,而老年代没有连续的空间分配给大对象,触发FullGC。

个人理解:MajorGC时往往伴随着MinorGC,会同时清理新生代和老年代,这正是FullGC的表现。所以经常将FullGC和MajorGC混为一谈。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值