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内部的状态。

相关推荐
磊 子4 分钟前
STL无序关联容器—unorded_set+unorded_map
开发语言·c++
向量引擎9 分钟前
从零起步,如何打造专属向量引擎 API 中转工作流?
java·服务器·前端
LJianK19 分钟前
普通接口,用到getter和setter方法的地方,jackson转换
java
辰海Coding13 分钟前
MiniSpring框架学习-分解 Dispatcher
java·学习·spring·架构
AI人工智能+电脑小能手16 分钟前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
小江的记录本24 分钟前
【JVM虚拟机】JVM调优:常用JVM参数、调优核心指标、OOM排查、GC日志分析、Arthas工具使用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
金銀銅鐵37 分钟前
[Java] 用图形化界面演示 iadd, isub, iconst_<i> 指令的效果
java·后端·python
J2虾虾1 小时前
Spring AI Alibaba文档
java·人工智能·spring
YikNjy1 小时前
break和continue
java·开发语言·算法
SomeOtherTime1 小时前
Geojson相关(AI回答)
java·前端·python