Java的CMS垃圾回收流程

1.初始标记(initial mark)

CMS会标记所有根对象直接可达的对象。

2.并发标记(Concurrent marking)

并发标记阶段,垃圾收集器和应用程序并发执行,从根对象直接可达的对象开始进行tracing,递归的扫描所有可达对象。

3.并发预清理(Concurrent precleaning)

并发预清理阶段会先分担一些重新标记阶段的工作,扫描卡表脏的区域以及新晋升到老年代的对象。

4.可中断的预清理阶段(AbortablePreclean)

可中断的预清理阶段也是先分担一些重新标记阶段的工作,和并发预清理阶段不同的是这个阶段可以中断。

5.重新标记(remark)

因为前几个并发阶段会导致引用关系发生变化,所有需要重新遍历一遍新生代对象、GC Roots和卡表等,从而对标记进行修正,需要花较长的时间来进行重新扫描。

6.并发清理(Concurrent Sweeping)

并发清理阶段,标记为不可达的对象会被清理。

7.并发重置(Concurrent Reset)

重置CMS内部的状态。

相关推荐
不积跬步无以至千里mmbb2624 分钟前
rust_analysis
开发语言·后端·rust
SL_staff31 分钟前
10人团队如何用轻量私有化文档平台实现知识复用提效?技术视角拆解B/S架构下的协作闭环
java·开源·全栈
释厄62344 分钟前
同性线套娃律——圆面积必然=1+2+...+n 的求和·圆心不与 π 相关
java·人工智能·算法·1024程序员节
暴力求解1 小时前
C++ ---继承(二)
开发语言·c++·算法
猫猫.1531 小时前
IO、存储、硬盘、文件系统详细总结
java·java-ee
陈飞EXCEL1 小时前
北京杰飞 IT 旗下妙码生花少儿Python编程上线两大学习系统
开发语言·python·学习
SL_staff1 小时前
设备离线时业务不中断:JVS-IOT高可用架构解析
java·物联网·产品
郭小李2 小时前
mybatis 动态 sql
java·sql·mybatis
代龙涛2 小时前
WordPress Query 查询机制详解(WP_Query)
开发语言·后端·php·wordpress
瑞码空间2 小时前
JSP与Servlet核心开发与CRUD实战笔记
java·笔记·servlet·jsp