并发Java
- 分类
- Java 并发
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 01:13
答案
CMS和G1在并发标记时使用的是同一个算法:三色标记法,使用白灰黑三种颜色标记对象。白色是未标记;灰色自身被标记,引用的对象未标记;黑色自身与引用对象都已标记。 GC 开始前所有对象都是白色,GC 一开始所有根能够直达的对象被压到栈中,待搜索,此时颜色是灰色。然后灰色对象依次从栈中取出搜索子对象,子对象也会被涂为灰色,入栈。当其所有的子对象都涂为灰色之后该对象被涂为黑色。当 GC 结束之后灰色对象将全部没了,剩下黑色的为存活对象,白色的为垃圾。
相关题目(5)
怎么查看和分析堆内存?共源 1
Java
CPU 满了怎么排查?共源 1
并发Java
哪些情况会发生栈溢出?共源 1
Java JVM并发Java
常用的 JVM 排查工具有哪些?共源 1
Java JVM并发Java
JVM 什么时候启动?共源 1
Java JVMJava
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(JVM).md
knowledge_noteQuestion 42: 什么是并发标记中的三色标记法?
Source answer: CMS和G1在并发标记时使用的是同一个算法:三色标记法,使用白灰黑三种颜色标记对象。白色是未标记;灰色自身被标记,引用的对象未标记;黑色自身与引用对象都已标记。 GC 开始前所有对象都是白色,GC 一开始所有根能够直达的对象被压到栈中,待搜索,此时颜色是灰色。然后灰色对象依次从栈中取出搜索子对象,子对象也会被涂为灰色,入栈。当其所有的子对象都涂为灰色之后该对象被涂为黑色。当 GC 结束之后灰色对象将全部没了,剩下黑色的为存活对象,白色的为垃圾。
Reviewed answer: 三色标记法用白、灰、黑三种颜色描述对象标记状态:白色表示未标记,灰色表示对象已标记但其引用对象未完全扫描,黑色表示对象及其引用都已扫描完成。CMS和G1在并发标记中都会使用该思想。