CMS与G1区别

CMS过程
初始标记
记录能被GC Root直接引用的对象,触发一次STW,但是这次STW很快,因为在标记的过程中不会标记一整条引用链的对象,如图所示,只记录红色箭头关联到的对象,不记录黑色箭头。
在这里插入图片描述

并发标记
从GC Roots的直接引用对象开始依次扫描(对上面的黑色箭头的链路做扫描),这个过程需要比较多的时间,用户线程和GC线程同时执行,不会产生STW,因为在扫描的过程中用户线程还在不断的执行所以可能会出现标记过的对象又变成了垃圾。

重新标记
重新标记需要Stop The World,这个阶段是为了修正在并发标记阶段产生的浮动垃圾,对标记过的对象进行。

并发清除
GC线程和用户线程同时进行,开始正式清除未被标记的垃圾,在此阶段也会产生垃圾(浮动垃圾),产生垃圾后无法清除,只能留待下一次GC。
在这里插入图片描述
收集过程总结:
在初始标记和重新标记有两次stop the world的标记操作

关于漏标----增量更新
并发模式失败-------用serialOld兜底

CMS优缺点
优点:并发收集、低停顿。
其实最主要的是CMS把收集过程中步骤拆分了,而最耗时的操作都是并发执行,自然就会低停顿了。
缺点:产生大量空间碎片(可以通过配置重新整理,但是加长停顿时间)、并发阶段会降低吞吐量。无法处理浮动垃圾。
CMS采用的是标记-清除算法,所以会产生大量的空间碎片

G1过程
初始标记 ( Initial Marking )
这个阶段是 STW(Stop the World ) 的,所有应用线程会被暂停,标记出从 GC Root 开始直接可达的对象。

并发标记
从 GC Roots 开始,对堆中对象进行可达性分析,找出存活对象,耗时较长。

最终标记
标记那些在并发标记阶段发生变化的对象,将被回收。

筛选回收

首先,对各个 Regin 的回收价值和成本进行排序,根据用户所期待的 GC 停顿时间,来指定回收计划,回收一部分 Region 。

G1 中提供了 Young GC、==Mixed GC ==两种垃圾回收模式,这两种垃圾回收模式,都是 Stop The World(STW) 的。

在这里插入图片描述
G1中维护了一个Region的优先级列表,却表在有限的STW时间内做最高效的回收

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值