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

目录

问题分析

问题答案


题分析

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

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

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

题答案

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

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

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

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

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

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

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

相关推荐
小李独爱秋35 分钟前
模拟面试:用自己的话解释一下lvs的工作原理
linux·运维·面试·职场和发展·操作系统·lvs
扶苏瑾1 小时前
线程安全问题的产生原因与解决方案
java·开发语言·jvm
百锦再3 小时前
Java中的反射机制详解:从原理到实践的全面剖析
java·开发语言·jvm·spring boot·struts·spring cloud·kafka
攒了一袋星辰4 小时前
JVM类加载过程
运维·服务器·jvm
想用offer打牌4 小时前
一站式了解火焰图的基本使用
后端·面试·架构
SuperEugene5 小时前
错误处理与 try/catch:真实项目里应该捕什么错?
前端·javascript·面试
wuqingshun3141596 小时前
说一下java的反射机制
java·开发语言·jvm
Jason_Honey27 小时前
【蚂蚁金服Agent算法岗一面】
人工智能·算法·自然语言处理·面试
Wect7 小时前
从输入URL到页面显示的完整技术流程
前端·面试·浏览器
石去皿8 小时前
文本分类常见面试篇:从 fastText 到 TextCNN 的核心考点全解析
面试·分类·数据挖掘