分享好友 最新动态首页 最新动态分类 切换频道
CMS垃圾收集器详解(转载)
2024-12-27 02:11

CMS垃圾收集器详解(转载)

CMS全称为Concurrent Mark Sweep,即 并发标记清除,对比其他的收集器,最大的区别在于并发:在GC线程工作的时候,用户线程不会完全停止,用户线程在部分场景下与GC线程一起并发执行。但是,无论是什么垃圾收集器,Stop the world是一定无法避免的。CMS只是在部分的GC场景下可以让GC线程与用户线程并发执行。

CMS的涉及目的是为了避免【老年代GC】出现长时间的卡顿(stop the word)。

CMS主要是实现了标记清除垃圾回收算法,可分为5个步骤

  • 初始标记(STW
  • 并发标记
  • 并发预清理
  • 重新标记(STW
  • 并发清除

详细GC步骤如下

初始标记

初始标记会标记GCRoots直接关联的对象以及年轻代指向老年代的对象初始标记这个过程会发生Stop the word。但是这个阶段的速度很快,因为没有向下追溯,即只标记一层。

并发标记

这个过程不会停止用户线程(即不会发生stop the world),这一阶段主要是GC Roots向下追溯标记所有可达的对象,该阶段比较耗时,因为需要追溯

并发预处理

这个阶段主要目的就是【减少下一阶段重新标记所消耗的时间,因为下一阶段重新标记需要Stop the World.

并发标记阶段由于用户线程是没有被挂起的,所以对象有可能是发生变化的。可能有些对象,从新生代晋升到了老年代;可能有些对象,直接被分配到了老年代(大对象)。可能老年代或者新生代的对象引用发生了变化…

解决该问题就是——针对老年代的对象,可以借助类card table的存储,将老年代对象发生变化所对应的卡页标记为dirty。

所以并发预处理这个阶段会扫描可能由于并发标记时导致老年代发生变化的对象,会再扫描一边标记为dirty的卡页。

对于新生代的对象,还需要遍历新生代在并发标记过程中有没有对象引用了老年代。JVM提供了很多参数,可能在这个过程中触发一次minor GC(触发GC意味着可以更少地遍历新生代的对象

重新标记

标记那些在并发标记阶段发生变化的对象,该阶段你会Stop the world,这里停顿的时间很大程度上取决于并发预处理阶段

并发清除

该阶段不会发生stop the world用户线程一边执行,GC线程一边在回收不可达对象

注意:这个过程可能存在用户线程在不断产生垃圾,但也只能留到下一次GC进行处理,这些垃圾又称为"浮动垃圾"。

全部结束后会重置CMS算法相关的内部数据,为下一次GC循环做准备。

以上就是CMS回收垃圾的过程,其实就是把垃圾回收的过程给细分了,然后再某些阶段可以不停止用户线程,一边回收垃圾,一边处理请求,来减少每次垃圾回收时stop the word的时间。当然,中间也做了很多的优化,比如dirty card标记,中途触发minor GC等等

  1. 空间需要预留:CMS垃圾收集器可以一边回收垃圾,一边处理用户线程,那需要在这个过程中保证有充足的内存空间供用户使用。如果CMS运行过程中预留的空间不够用,会报错,这时会启动Serial Old垃圾收集器进行老年代的垃圾回收,会导致停顿的时间很长。

  2. 内存碎片问题:CMS本质上是实现了标记清除算法的收集器,这意味着会产生内存碎片,由于碎片太多,又可能导致内存空间不足所触发full GC,CMS一般会触发full GC这个过程堆碎片进行整理。整理涉及到【移动】和【标记】,这个过程肯定会stop the world,如果内存足够大,这个过程卡顿也需要一定的时间。

综合来看,使用CMS的弊端好像一个死循环

内存碎片过多,导致空间利用率降低,空间本身就需要预留给用于线程使用,现在碎片化又加剧了空间的问题,可能导致垃圾收集器降级为Serial Old,卡顿时间更长;要处理内存碎片问题,同样会卡顿。

所以,目前企业中一般都使用G1。

CMS垃圾回收器设计目的:为了避免「老年代 GC」出现「长时间」的卡顿(Stop The World

CMS垃圾回收器回收过程:初始标记、并发标记、并发预处理、重新标记和并发清除。初始标记以及重新标记这两个阶段会Stop The World

最新文章
成品网站1.1.719:10分钟打造你的专属平台,原来建站竟然如此简单!
你想要拥有一个高端、精美、实用的网站?但繁琐的建站过程、昂贵的开发费用和专业技能的缺乏总让人头疼。其实,搭建网站也能像组装乐高一样简单有趣!成品网站1.1.719就是一款能快速帮你实现梦想的网站构建工具。这款神器就像一个建站百宝箱
剧本写作生成器app免费
剧本写作生成器app是一款免费的智能剧本生成软件。操作较为简单,用户只需简单描述角色的性格、外貌、背景等基本信息,AI就能快速生成人物形象,输入关键词即可生成各类剧本,涵盖悬疑推理、浪漫爱情等多种类型。在软件主页点击特定位置可
手机刷机怎么刷
手机刷机,是指通过特定的工具和步骤,为手机重新安装或升级操作系统,以达到优化性能、解锁新功能或解决系统问题的目的。以下是详细的刷机步骤及注意事项,帮助用户顺利完成刷机过程。### 一、刷机前的准备工作1. **备份数据**:刷机会清
开源抖音卡片系统源码 抖音跳转微信卡片外链系统安装教程
抖音内嵌的卡片通常是为了引导用户完成某种操作,比如关注、访问外部链接等。如果你想让抖音内的卡片直接跳转到微信的二维码页面,这通常是通过内置的分享功能或者集成第三方服务来实现的。1. **官方分享功能**:抖音提供了API供开发者定制
高清美女写真:AI绘画神器让你一键生成惊艳美图
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个看脸的时代,美容自拍和写真已经成为许多年轻人的日常。然而,想要拍出令人惊艳的美女
解放品区·年度词
转自:上观新闻1一整年,徐汇都不缺重磅科技盛会。3月下旬,徐汇接连两个周末举办了2024全球开发者先锋大会、首届中国具身智能大会;7月,连续第七年承办世界人工智能大会;12月初,2024科创大会,徐汇密集举办近10场分论坛。这些分论坛的
网易云外链规划师:提升网站知名度和搜索引擎排名
简介在当今竞争激烈的在线环境中,建立有效的网站外链对于提高知名度、吸引流量和改善搜索引擎排名至关重要。网易云分享外链是一个绝佳的机会,可以利用这个流行平台的力量来获得这些优势。本计划概述了为网易云分享外链建立全面的外链建设
朗玛信息:招商证券投资者于12月10日调研我司
证券之星消息,2024年12月10日朗玛信息(300288)发布公告称招商证券顾佳 刘晓珊于2024年12月10日调研我司。具体内容如下:问:公司进行医学人工智能大模型的产品研发的优势有哪些?答:公司从 2014年起深耕互联网医疗领域,旗下“39健康网
淄川SEO整站优化,全面提升网站排名与用户满意度
淄川SEO整站优化服务,旨在全面提升网站在搜索引擎中的排名及用户访问体验,通过综合策略优化网站结构、内容与外部链接,实现网站在搜索引擎结果中的高效展示和用户访问的便捷优化。随着互联网的快速发展,网站已经成为企业展示自身形象、
演绎“后武侠”
《天龙八部之宿敌》,许嵩为大型网络游戏《天龙八部3》谱写的游戏主题曲,歌曲于2011年9月20日发布。 如果说《断桥残雪》是表达一种情绪,《清明雨上》是一种情感,《半城烟沙》是一种情操,那《宿敌》则可看作一种情怀。字里行间里流淌的
相关文章
推荐文章
发表评论
0评