CMS(Concurrent-Mark_Sweep)垃圾回收器的工作原理

CMS(Concurrent-Mark_Sweep)垃圾回收器的工作原理

简介:

对于许多应用程序而言,在程序运行时的吞吐量不如快速响应时间那么重要,尤其是在互联网站或者B/S系统的服务端,这类应用尤其用户的体验感,中间出现停顿的时间越短越好,CMS垃圾收集器应运而生,它在JDK1.5时作为HotSpot JVM的一个默认的内置垃圾收集器。
CMS的特点是低延迟,很适合于与用户交互的应用。这款垃圾收集器是一第一款真正意义上的并发垃圾回收器,它使用的是标记-清除算法,所以也会有"stop the world"时间,但是时间会很短。

工作流程

在这里插入图片描述

初始标记:

初始标记时要停止所有用户的线程,会进入"stop the world"时间,这时仅仅标记与GCRoots直接相连的对象(假设为集合A),所以初始标记的时间会很短。

并发标记:

此时标记的是与集合A直接或间接相连的对象(假设为集合B),跃然并发标记的时间较长,时长大约比初始标记大一个数量级,但是,此时是与用户程序并发执行的,并不会出现"stop the world"情况。

重新标记:

因并发标记时用户的线程还在执行,此时会产生新的连接对象(假设为集合C),重新标记就是标记集合C的对象。那么为了防止重新标记过程产生新的对象,所以此时要停止所有用户的线程,从而进入"stop the world"时间,此过程的用时也很短。

并发清除:

重新标记后,所以确定是垃圾的对象(假设为集合D),随后垃圾回收器会将集合D清除掉。并不会移动对象,所以此过程是可以和用户线程并发执行的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值