大厂面试题-JVM中的三色标记法是什么?

目录

问题分析

问题答案


题分析

三色标记法是Java虚拟机(JVM)中垃圾回收算法的一种,主要用来标记内存中存活和需要回收的对象。

它的好处是,可以让JVM不发生或仅短时间发生STW(Stop The World),从而达到清除JVM内存垃圾的目的,JVM中的「CMS、G1垃圾回收器」都用到了三色标记法。

下面来看一下这个问题的解答。

题答案

在三色标记法中,Java虚拟机将内存中的对象分为三个颜色:

  1. 白色:表示还没有被垃圾回收器扫描的对象;

  2. 黑色:表示已经被垃圾回收器扫描过,且对象及其引用的其他对象都是存活的;

  3. 灰色:表示已经被垃圾回收器扫描过,但对象引用的其他对象尚未被扫描。

在GC开始时(如图),先将所有对象都标记为白色,然后从根对象开始遍历内存中的对象,接着把直接引用的对象标记为灰色。

再判断灰色集合中的对象是否存在子引用,不存在咋放入黑色集合,如果存在,就把子引用对象放入到灰色集合。

按照这样一个步骤不断推导,直到灰色集合中所有的对象变黑后,本轮标记完成。最后,还处于白色标记的对象就是不可达对象,可以直接被回收。

相关推荐
→长歌2 小时前
2026Java面试30题精解
java·python·面试
西门吹雪分身2 小时前
新生代(Young Generation) 内部的三个区域
jvm
笨笨没好名字2 小时前
结构工程/机械工程/工业设计/硬件工程师面试题目(题源大疆:12+28)
人工智能·面试·职场和发展
LSL666_3 小时前
JVM面试题——垃圾收集器
java·jvm·面试·垃圾收集器
woai33644 小时前
JVM学习-基础篇-字符串常量池
jvm·学习
庞轩px4 小时前
后端开发面试题总结
java·jvm·面试·并发编程·mysql与redis·spring与消息队列·网络协议与设计模式
菜鸟小九6 小时前
JVM类加载与字节码技术(类文件结构、字节码指令、编译期处理、类加载阶段、类加载器、运行期优化)
jvm
江不清丶6 小时前
生产实战:系统频繁Full GC,如何一步步定位与解决?
java·jvm
吃不胖爹6 小时前
宝塔部署前后端时,配置域名与ssl证书
java·jvm
掘金安东尼7 小时前
⏰前端周刊第 459 期v2026.4.3
前端·javascript·面试