分享好友 最新动态首页 最新动态分类 切换频道
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

最新文章
昌黎县团林乡党委原书记张东风(副处级)涉嫌严重违纪违法接受纪律审查和监察调查
中央纪委国家监委网站 薛鹏近日,第二届中国国际供应链促进博览会在北京举办,智能汽车链展区吸引大量观众驻足观看。在该展区,吉利、宁德时代、比亚迪、小米等一批知名企业进行新产品、新技术的首发首展首秀,全方位展示从核心原材料到关
手机得选最好的!这几款配置颜值俱佳 可以放心入
  【CNMO科技导购】现在挑选一款既能满足当前需求又具备未来潜力的手机,真得好好动动脑筋。毕竟,现在的手机已经不只是打电话的工具了,它更像是我们生活、工作和学习中的全能伙伴。  说到选手机,有个关键点不能忽视——要看得远一点
全球首发:网站安全新动向,站长防DDoS攻击应对策略
2025AI感悟图像,仅供参考  随着互联网的不断发展,网络安全问题也日益凸显。其中,DDoS(分布式拒绝服务)攻击作为一种常见的网络攻击方式,已经对许多网站的正常运营造成了严重的影响。那么,面对这一全球网站安全的新趋势,站长们应该如
苹果 6手机屏幕花掉了是怎么回事?
1、 有时候触屏失灵是因为屏幕上面灰尘过大引起的。找一块擦眼镜片的擦布清除苹果手机屏幕。2、有时候在涂抹护手霜后,立即使用触摸屏这样也可能导致屏幕失灵或双手弄湿时,所以在使用手机的时候尽量保持擦干双手。3、如果买的是很垃圾的塑
提升神马关键词排名报价
提升神马关键词排名报价是许多企业和个人关注的重点。通过优化关键词,可以提高网站在搜索引擎中的排名,从而吸引更多的流量和潜在客户。报价因服务提供商、关键词竞争度、优化难度等因素而异。提升神马关键词排名的报价需要根据具体情况进
超真实美女写真,轻松一键生成!AI绘画工具全评测与使用指南
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 大家好,宝子们!你们是否也曾幻想过拥有一个完美的虚拟女友,或者用AI技术为自己打造一组独
快速搭建一个个人博客
WordPress是一个开源的内容管理系统(CMS),它可以用来搭建个人博客或者其他类型的网站。以下是搭建WordPress个人博客的步骤:1. 选择合适的主机和域名:首先,你需要选择一个可靠的主机提供商,并注册一个域名。主机提供商会提供服务器空
谷歌最强AI视频生成模型Veo2登场:最高4K分辨率,提高对现实世界理解
  谷歌公司今天发布公告,正式发布了视频生成模型 Veo 2,官方声称新模型可以更好地理解现实世界物理、人类运动及表达的细微差别,进一步提升整体细节和逼真度。  谷歌 Veo 2 模型可以生成分辨率最高 4K(4096 x 2160 像素),时长为 2
一文告诉你教育行业在小红书做组合投放如何降低获客成本?
01 背景挑战概览小红书平台正逐渐成为年轻人群获取语言学习资讯的关键渠道,特别是在语言学习领域内,用户分享个人学习历程和心得的热情空前高涨。PTE(培生英语)等教育品牌在此平台上面临着如何在海量用户生成内容(UGC)中凸显自我,并
给2024年最好的10部中国电影排名:《破·地狱》第3,第1名没争议
是时候说说2024年的中国电影了。这一年的电影市场,可以用“冰火两重天”来形容。年初的春节档票房高达80.16亿,打破中国影史票房纪录,《热辣滚烫》和《飞驰人生2》两部30亿+级别的作品,让人嗅到了市场复苏的气息。但随后的暑期档却票房
相关文章
推荐文章
发表评论
0评