您的位置:首页 > 娱乐 > 明星 > JVM知识总结(CMS收集器)

JVM知识总结(CMS收集器)

2024/10/6 16:28:48 来源:https://blog.csdn.net/qq_35508033/article/details/140972200  浏览:    关键词: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来收集。

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com