JVM知识总结(CMS收集器)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

在这里插入图片描述

CMS收集器

CMS(Concurrent Mark Sweep)收集器是以获取最短回收停顿时间为目标的收集器。

  • 它是HotSpot虚拟机第一款真正意义上的并发收集器,第一次实现了让垃圾收集线程与用户线程(基本上)同时工作。

它是标记-清除算法实现,整个过程可以分为以下步骤:

在这里插入图片描述

初始标记:

  • 暂停所有的其他线程stop the world,并记下GC Roots直接引用的对象,速度很快。

并发标记:

  • 从GC Roots的直接关联对象开始遍历整个对象链的过程,这个过程很长,但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行。
    • 因为用户程序继续执行,可能会有导致已经标记过的对象状态发生变化。

重新标记:

  • 为了修正并发标记期间因为用户线程继续运行而导致标记产生变动的那一部分对象的标记记录。
    • 这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。
    • 主要用到三色标记里的增量更新算法做重新标记。

并发清理:

  • 开启用户线程,同时GC线程开始对未标记的区域做清扫。
    • 这个阶段如果有新增对象会被标记为黑色,不做任何处理。

并发重置:

  • 重置本次GC过程中的标记数据。

CMS的缺点

对CPU的资源敏感,会和服务器抢资源。

无法处理浮动垃圾,就是在并发标记和并发清理阶段产生的垃圾对象,只能等下一次GC来收集。

它使用的是标记-清除算法,那么就会导致收集结束后,会产生大量的内存碎片,不利于后续对象的存储。

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值