CMS收集器

CMS

并发标记清除器

1、过程

  • 初始标记:标记一下GC Roots 能直接关联的对象,速度快
  • 并发标记: 进行GC Roots Tracing , 标记全部的垃圾对象,耗时长
  • 重新标记: 修改并发标记的产生的垃圾对象,耗时较短
  • 并发清除:使用标记-清除算法清除垃圾,耗时较长

初始标记和重新标记时会停止用户线程的,并发标记和并发清除是用户线程和gc线程并行执行

2、CMS回收停顿几次

2次

以最少的STW,找出要清理的垃圾

3、为什么要STW

如果不暂停用户线程,就会不断的产生垃圾,永远也清理不玩

采用标记-清除算法,用户程序运行会导致对象的引用关系发送变化

漏标:原来不是垃圾,但是在GC的过程中产生了一些浮动垃圾,下次GC清理就好

错标:开始没有引用,但是GC的同时,用户线程又重新引用了他,但这个时候把它当垃圾清理掉了,这就会使程序运行错误

4、如何识别垃圾

三色标记算法:

如果一个对象到GC ROOT没有任何一条引用链就表示可以被回收

标记步骤:

  • 所有的对象都是白色
  • 直接关联的对象设为灰色
  • 遍历灰色对象的所有引用,灰色对象设置黑色,引用设置为灰色
  • 重复上面步骤,知道没有灰色对象位置
  • 结束时,黑色为存活对象,白色为对象回收

这个过程正确执行的前提是没有其他线程改变对象间的引用关系。

5、cms 为什么要停顿两次

以最少的STW成本,找出要清理的垃圾

全量垃圾和增量垃圾

  • 初始标记就是找出全量垃圾根对象

  • 并发标记:也是找出全量垃圾的根对象

  • 重新标记:找出增量垃圾

  • 标记-清除就是清除垃圾对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值