CMS垃圾收集器分析
创作时间:
作者:
@小白创作中心
CMS垃圾收集器分析
引用
CSDN
1.
https://blog.csdn.net/jayhaha123/article/details/140110424
垃圾收集器的判断指标
衡量垃圾收集器的三项重要指标是:内存占用,吞吐量,和延迟,三者构成了一个不可能三角,好的垃圾收集器应该尽可能满足其中的两项。本文分析的CMS垃圾收集器着重于低延迟,如果你希望你的服务器停顿延迟短,CMS就非常满足这类应用的需求。
CMS收集器介绍
CMS(Concurrent Mark Sweep)收集器是用于收集老年代的收集器,采用标记清除算法,下面这张图很好的解释了CMS的执行过程:
一共可以划为4步:
- 初始标记,这一步很快,只是标记一下GCROOTS中能直接关联到的对象
- 并发标记,这一步就是遍历对象图的过程,比较耗时,但CMS在这一步实现了并发
- 重新标记,CMS使用的是增量更新,较原始快照会慢一点,但是浮动垃圾会少一点
- 并发清除,可以注意到采用标记-清除不需要移动对象,我们可以做到并发,那他会有那些缺点呢?(先抛出一个问题
CMS垃圾收集器缺点
Hotspot虚拟机的线程是1对1线程模型。在并发阶段,垃圾收集线程虽然不会导致整个应用停下来,但是会占用处理器资源,还是会导致应用变慢。具体的默认回收线程数是(处理器核心数 +3)/4/。
其次,CMS垃圾收集器无法处理浮动垃圾(在并发阶段,随着用户线程持续运行还是会有垃圾不断产生,CMS无法处理这些垃圾),同时在并发阶段,用户线程也需要一定的空闲堆空间来保证运行,那么如果此时空间不够了,就会导致并发失败(Concurrent Mode Failure),此时采用Serial Old来重新收集老年代。再思考一下,为什么Serial Old而不用Parallel Old收集器呢?他们都要Stop the world呀。因为此时堆内存已经很紧张了,我们还要开多个线程,不是更完蛋吗。
最后,由于采用标记-清除算法,我们在清除时是方便了,但这会导致很多的内存碎片。当空闲内存无法满足对象的分配要求时,我们又会提前进行一次Full GC。好消息是通过参数我们可以改善这个问题:-XX:CMSFullGCsBefore-Compaction(此参数从Jdk 9 开始废弃),这个玩意配置后,我们经过配置的参数次不整理的Full GC后,在下一次进行收集前会进行碎片整理。
热门推荐
九亭镇垃圾分类智能化升级:AI助力投放准确率提升
惠州接仙桥仙境+徐田古村,体验广东的世外桃源之旅
经侦大队端午节宣传:传统文化与警方提示的完美结合
智慧后勤三维可视化管理,让办公用房利用率提升
美国大学生物医学工程硕士申请概要
“中正平和”——赵孟頫人物画赏析

主力净额和主买净额的区别
主力净额和主买净额哪个重要?
笼目材料,凝聚态物理学家的团宠!
汽车遇到打滑怎么办
青藏高原3500年水文气候变化历史:树木年轮揭示的气候密码
Ollama开启GPU加速与NVIDIA驱动安装指南
华为交换机接口基础知识详解
企业背景调查是什么?目的、内容与实施步骤全解析
江苏昆山张浦镇:全域土地综合整治助力乡村振兴
面板VA和IPS哪个好?如何根据需求选择合适的显示面板?
西安杨贵妃华清池:历史背景、文化价值与保护措施
华清池:一池温泉,千年故事
最牛调解员向戎,使晋国和楚国停战40年
前胸后背长痘痘的原因和解决方法
怀孕发烧有哪些检查?怀孕发烧检查项目全解析
结构胶和免钉胶的区别是什么?哪个更牢固?
提升财务管理效率,掌握账务核对技巧
“欢庆边城”︱边城茶峒景区国庆系列文旅活动“菜单”出炉!
Steam玩家显卡占比排行:3060依旧霸榜,主流显卡分布调查
孕妇做B超是否需要憋尿?不同孕期阶段的具体要求
如何有效实施团队目标管理步骤?
阳线的定义和作用是什么?这个定义和作用如何影响投资决策?
掌握动态规划技巧,轻松解决复杂问题
邵武:举办春社民俗文化交流活动 助力文旅经济发展