• 基本说明:

    • 目标:获取最短回收停顿时间
    • 算法:标记-清除算法
    • 线程:并发
  • 步骤:
    • 初始标记:(会STP)

      • 标记一下 GC Roots 能直接关联到的对象,速度很快
    • 并发标记:(耗时最长,且可与用户线程一起工作)
      • 进行 GC Root Tracing 的过程
    • 重新标记:(会STP)
      • 修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录。
      • 时间:比初始标记稍长,远比并发标记时间短。
    • 并发清除:(耗时最长,且可与用户线程一起工作)
    • 总体来说:可以看作,CMS的内存回收过程是与用户线程一起并发执行的。
  • 缺点:
    • 1、对CPU资源敏感

      • 问题:并发阶段虽然用户线程不停顿,但会占用CPU资源导致用户线程变慢,吞吐量降低。

        • 默认回收线程数:(CPU数量+3)/4。

          • 当CPU>4时,并发线程>25%的CPU资源。且随CPU数量增加而下降。
          • 当CPU<4时(假设为2),并发线程>50%的CPU资源,很影响用户体验。
      • 解决:
        • (不提倡使用)提供“增量式并发收集器”:并发标记和并发清除阶段让GC线程和用户线程交替运行,减少GC线程的独占资源时间。会增长GC时间,但降低用户影响。
    • 2、无法处理浮动垃圾:
      • 1、浮动垃圾:进行并发清除时用户线程运行产生的垃圾。只能在下一次GC时再清理。
      • 2、并发清理阶段用户线程运行需要预留空间,老年代没有填充满就会进行GC。
        • JDK1.5:该GC启动百分比阈值为68%
        • JDK1.6:该GC启动百分比阈值为92%
        • 可通过:-XX:CMSInitiatingOccupancyFraction配置(太高会引发大量问题3)。
      • 3、老年代GC如果预留空间不足,会出现“Concurrent Mode Failure”,此时虚拟机会启动后被预案,临时启用 Serial Old 收集器,会导致停顿时间变长。
    • 3、基于标记-清除算法:
      • 问题:会产生空间碎片。大对象分配会因无法找到连续内存空间而触发FGC
      • 解决:
        • +UseCMSCompactAtFullCollection参数:在CMS要进行FGC时开启内存碎片的合并整理过程。默认开启。

          • 引发问题:内存整理导致停顿时间变长
        • -XX:CMSFullGCsBeforeCompaction参数:设置N次不压缩的FGC后跟着来一次带压缩的FGC。默认为0,即每次FGC都进行碎片整理。

CMS 收集器整理的更多相关文章

  1. 面试之一:CMS收集器整理

      CMS收集器整理 @white 基本说明: 目标:获取最短回收停顿时间 算法:标记-清除算法 线程:并发 步骤: 初始标记:(会STP) 标记 GC Roots 能直接关联到的对象,速度很快 并发 ...

  2. JVM实用参数(七)CMS收集器

    HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间.该目标对于大多数交互式应用很重要,比如web应用.在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器 ...

  3. CMS收集器和G1收集器优缺点

    首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop-the-world都是不可避免的.Stop-the-world意味着从应用中停下来并进入到GC执行过程中去. ...

  4. CMS收集器产生的问题和解决方案

    垃圾收集器长时间停顿,表现在 Web 页面上可能是页面响应码 500 之类的服务器错误问题,如果是个支付过程可能会导致支付失败,将造成公司的直接经济损失,程序员要尽量避免或者说减少此类情况发生. 提升 ...

  5. JVM-如何判断对象存活与否与CMS收集器和G1收集器的区别

    JVM如何判断对象存活? 1.计数器 2.可达性分析   (很多主流语言采用这种方法来判断对象是否存活) 计数器:每当有一个地方引用该对象时,计数器 +1:引用失效则 -1: 优点:实现简单,判定效率 ...

  6. 垃圾收集器之:CMS收集器

    HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间.该目标对于大多数交互式应用很重要,比如web应用.在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器 ...

  7. CMS收集器和G1收集器

    CMS收集器 CMS收集器是一种以获取最短回收停顿时间为目标的收集器.基于"标记-清除"算法实现,它的运作过程如下: 初始标记 并发标记 重新标记 并发清除 初始标记.从新标记这两 ...

  8. CMS收集器和G1收集器 他们的优缺点对比 G1只有并发标记才不会stop-the-world 其他都会停下来(阿里多次问到)

    CMS收集算法 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 G1收集算法 参考:G1 垃圾收集器入门 首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop ...

  9. JVM垃圾回收之CMS收集器

    从前文JVM垃圾回收几种常见算法和常见收集器我们知道,CMS是老年代垃圾收集器.CMS 收集器主要关注系统停顿时间.CMS 是 Concurrent Mark Sweep 的缩写,意为并发标记清除,从 ...

随机推荐

  1. firefox因 HTTP 严格传输安全(HSTS)机制无法打开网页

    1.打开about:config 2.查找: security.enterprise_roots.enabled ,默认为false,改为true就可以了 3.吐槽,firefox太极端了,这是作死.

  2. 在ubuntu下安装free pascal

    1.ubuntu16.04版本已经集成了free pascal最新的3.0版,只需要安装就可以了. sudo apt install fp-compiler 在ubuntu里面,fp-compiler ...

  3. 收集整理的mybatis资料

    这是个系列文章,讲的非常不错 mybatis 详解(一)------JDBC  https://www.cnblogs.com/ysocean/p/7271600.html mybatis  http ...

  4. redmine 的安装

    https://bitnami.com/stack/redmine/installer#官方地址 安装很简单,给权限 chmod +x bitnami-redmine-3.3.0-1-linux-x6 ...

  5. webapi应用架构详解

    webapi适用场景 常见的应用包括以下四类,PC客户端程序,APP程序,网站程序,H5程序.这些应用需要的数据,服务可由同一个接口服务程序提供,这样,大大提高了产品多平台设计开发的效率,避免了重复的 ...

  6. [pwm]PWM的输入捕捉模式

    对于stm32来说,输入捕捉模式有两种: 普通输入捕捉模式:经常用来测量脉冲宽度和频率,例如测量脉冲宽度,TIM5_CH1来捕获高电平脉宽,首先先设置输入捕获为上升沿触发,然后记录下发生上升沿时TIM ...

  7. QT在CT上的安装及运行

    http://www.cubie.cc/forum.php?mod=viewthread&tid=2662&highlight=qt

  8. Spider Studio 新版本 (20140109) - 修复浏览器对部分网页不支持的BUG

    SS对部分网页中引用的jquery.js有冲突, 会造成网页部分JS效果无法正常执行. 本次版本对其进行了修正, 优化了浏览器的脚本引用机制, 修正了这个BUG.

  9. HBase学习系列

    转自:http://www.aboutyun.com/thread-8391-1-1.html 问题导读: 1.hbase是什么? 2.hbase原理是什么? 3.hbase使用中会遇到什么问题? 4 ...

  10. Differential Geometry之第九章常平均曲率曲面

    第九章.常平均曲率曲面 1.Hopf微分与Hopf定理 等温坐标系(isothermal coordinate system)曲面上的一种特殊坐标系.若曲面的第一基本形式I在坐标系(u,v)下可以写成 ...