CMS收集器与G1收集器区别

CMS垃圾收集器

特点:

内存区域分为:

  1. 年轻代
  2. 年老代
  3. 永久带

回收过程

CMS垃圾收集器- IT閱讀

  1. 初始标记
  2. 并发标记
  3. 重新标记
  4. 并发回收

cms垃圾收集器回收过程由以上几个步骤组成,其中1、3步骤会stop-the-world。

优点:并发、低停顿

缺点:

  1. 无法清理浮动垃圾,4.并发回收 阶段也会产生垃圾,这部分垃圾CMS是无法进行回收只有等到下次垃圾回收周期才能进行清理。
  2. 对cpu资源敏感,如果cpu资源不够用会比其他垃圾收集器性能更差。
  3. CMS采用“标记-清除”算法会产生空间碎片,碎片过多的话会影响大对象分配、对象晋升。

CMS GC:

1.Young GC

2.Old GC

3.Full GC

  • CMS GC时出现promotion failed和concurrent mode failure(concurrent mode failure发生的原因一般是CMS正在进行,但是由于老年代空间不足,需要尽快回收老年代里面的不再被使用的对象,这时停止所有的线程,同时终止CMS,直接进行Serial Old GC);
  • 统计得到的Young GC晋升到老年代的平均大小大于老年代的剩余空间;
  • CMS主动触发Full GC来避免碎片问题。

 

 

 

G1垃圾收集器

内存区域:

  堆被划分为一组大小相等的堆region,每个堆region都包含一个连续范围的虚拟内存。某些region集被分配了与较旧的收集者相同的角色(eden,幸存者,旧角色),但是它们的大小并没有固定。这在内存使用方面提供了更大的灵活性。

回收过程:

G1垃圾收集器详解_morris-优快云博客_g1收集器

  1. 初始标记
  2. 并发标记
  3. 最终标记
  4. 筛选回收

G1垃圾收集器回收过程由以上几个步骤组成,其中1、3步骤会stop-the-world。

优点:

  1. 并发回收
  2. 分代收集
  3. 没有内存碎片产生:由于G1使用了独立区域(Region)概念,G1从整体来看是基于“标记-整理”算法实现收集
  4. 可预测的停顿:G1除了回收速度快,还可以根据设置的回收停顿时间去进行回收。

缺点:适合大堆(6G以上)

G1 GC:

1.Young GC:当所有eden region使用达到最大阀值并且无法申请足够内存时,会触发一次YoungGC

2.Mixed GC:当越来越多的对象晋升到老年代Old Region时,为了避免堆内存被耗尽,虚拟机会触发一个混合的垃圾收集器,即Mixed GC,该算法并不是一个Old GC,除了回收整个Young Region,还会回收一部分的Old Region,这里需要注意:是一部分老年代,而不是全部老年代,可以选择哪些Old Region进行收集,从而可以对垃圾回收的耗时时间进行控制

3.Full GC:与cms一样,当空间不够用的时候g1也会退化成serial old gc进行垃圾收集。

  • concurrent mode failure:并发模式失败,CMS 收集器也有同样的概念。G1 并发标记期间,如果在标记结束前,老年代被填满,G1 会放弃标记。

    这个时候说明

    • 堆需要增加了,
    • 或者需要调整并发周期,如增加并发标记的线程数量,让并发标记尽快结束
    • 或者就是更早地进行并发周期,默认是整堆内存的 45% 被占用就开始进行并发周期。
  • 晋升失败:并发周期结束后,是混合垃圾回收周期,伴随着年轻代垃圾收集,进行清理老年代空间,如果这个时候清理的速度小于消耗的速度,导致老年代不够用,那么会发生晋升失败。

    说明混合垃圾回收需要更迅速完成垃圾收集,也就是说在混合回收阶段,每次年轻代的收集应该处理更多的老年代已标记区块。

  • 疏散失败:年轻代垃圾收集的时候,如果 Survivor 和 Old 区没有足够的空间容纳所有的存活对象。这种情况肯定是非常致命的,因为基本上已经没有多少空间可以用了,这个时候会触发 Full GC 也是很合理的。

    最简单的就是增加堆大小

  • 大对象分配失败,我们应该尽可能地不创建大对象,尤其是大于一个区块大小的那种对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值