简单叙述下cms(标记-清除算法)垃圾回收器原理

CMS(Concurrent Mark Sweep)垃圾回收器在Java中用于老年代的回收,主要分为四个阶段:初始标记、并发标记、重新标记和并发清理。初始和重新标记阶段需要暂停应用(StopTheWorld),其余阶段与应用程序并发执行。该机制优化了性能,减少了停顿时间,但可能出现浮动垃圾。主要关注点在于GCRoots追踪和内存清理。
摘要由CSDN通过智能技术生成

CMS在执行一次垃圾回收的过程一共分为4个阶段

1、初始标记:标记由4种(1:虚拟机(JVM)栈中引用对象 2:方法区中的类静态属性引用对象 3:方法区中常量引用的对象(final 的常量值) 4:本地方法栈JNI的引用对象)gc roots直接关键的对象;

2、并发标记:对老年代所有的对象进行追踪,看看是否能与GC Roots建立关系;

3、重新标记:标记并发标记阶段引用变动的对象;

4、并发清理:并发清理掉可回收的内存,但是因为与用户线程并行运行,所以每次Full GC都会清理不干净,产生浮动垃圾。

只有1和3阶段是需要"Stop The World"的,CMS的垃圾回收机制尽可能的性能优化了,因为最耗时的,其实就是对老年代全部对象进行GC Roots追踪,标记出来到底哪些可以回收,然后就是对各种垃圾对象从内存里清理掉,这是最耗时的

你的鼓励是我分享技术最大的动力!如有错误之处,请指正,不胜感激。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值