千家信息网

GC是怎么快速枚举根节点的

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这期内容当中小编将会给大家带来有关GC是怎么快速枚举根节点的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java一个优点就是GC(Garbage Collecti
千家信息网最后更新 2026年11月02日GC是怎么快速枚举根节点的

这期内容当中小编将会给大家带来有关GC是怎么快速枚举根节点的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Java一个优点就是GC(Garbage Collection),虽然它能帮我们管理内存,但是它工作的时候会STW(Stop the World)。也就是停止所有的工作线程,"你们先别干活,我先来清理清理垃圾!"。

那就出问题了啊,你想想比如你在玩游戏的时候,电脑来个STW停个几秒钟时间,清理下垃圾。你可能就会"****",你队友可能也会"***"。

但是现在常用的一些垃圾收集器都得STW,虽然各种垃圾收集器已经各种绞尽脑汁减少STW的时间,但是做不到避免STW。具体的各种垃圾收集器的对比下次单独写一篇文章。

今天先来讲述一下GC是如何快速枚举根节点。在HotSpot虚拟机中,是通过可达性分析来判断此对象是否需要回收的。那可达性分析就需要找到"源头",也就是根节点。

通过枚举一个一个根节点(GC Roots),然后顺藤摸瓜一路摸下来,然后没摸到的那些对象就把它咔嚓回收了。那这个顺藤摸瓜的过程就必须让世界停止,也就是那些工作线程都得停了。

你想想如果不STW那对象引用关系变来变去的,垃圾收集器得怎么咔嚓对象啊,容易咔嚓错了,那咱们使用者不就急眼了啊。所以枚举根节点时STW不可避免,所以只能让STW尽量的短。

根节点主要在全局性的引用(常量、类静态属性)和执行上下文(栈帧中的本地变量表)中。那我们如果要一个一个的找过去就很慢。

并且我们的HotSpot又是准确性GC,也就是它需要知道某个位置上的某个数据的类型,类型是准确的。这样它就能准确的知道这块数据类型是不是它关心的指针也就是引用啦!

在HotSpot中是用了一种叫OopMap的结构来存放一个对象内什么偏移量上是什么类型的数据。在类加载过程中就会进行记录。

可以把OopMap理解为一个附加信息,或者说一件衣服的吊牌,咱们看吊牌就知道这衣服啥做的。所以GC在扫描的时候就可以直接看这些"吊牌"来知道信息了。

在JIT编译的时候也会在一些特定的位置记录下OopMap,记录了执行到该方法的某条指令的时候,栈上和寄存器里哪些位置是引用,每个方法可能会有好多个OopMap,这是根据特定位置来决定的,这个特定位置会把这个方法分会好几块,每一块都有一个OopMap。

这些特定的位置主要在:

1、方法临返回前/调用方法的call指令后

2、循环的末尾

3、可能抛出异常的地方

这些特定的位置也叫安全点(Safepoint)。

之所以要在特定的位置才记录OopMap,是因为如果对每条指令都记录一下的话,那就会需要大量的空间,提高了GC的空间成本,所以用一些比较关键的点来记录就能有效的缩小记录所需的空间。

因此GC不是随时随地来的,得到达安全点时才可以开始GC。

平时OopMap是压缩在内存中,只要当要GC的时候才会解压出来,然后开始遍历来扫描对应的偏移量。

对于JNI(Java Native Interface)方法,因为本地方法和解释器、JIT编译器没啥关系,所以就没有OopMap。

它的引用是加了个中间层一样的,就是句柄,也就是引用不是直接指向堆中的对象,而是引用指向句柄,句柄指向堆中对象。所以GC直接扫描句柄就行了,不需要扫描栈帧。

上述就是小编为大家分享的GC是怎么快速枚举根节点的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

位置 节点 对象 方法 也就是 垃圾 时候 句柄 类型 收集器 分析 就是 指令 指向 数据 空间 吊牌 工作 顺藤摸瓜 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 互联网科技工作委员会 高科技互联网 中国互联网科技股 河南真二互联网科技有限公司 中资互联网科技 嘟嘟瓜互联网科技 互联网科技媒体 万达互联网科技 一五八零互联网科技 国外互联网科技网站 青岛中康互联网医疗科技有限公司 重庆威客帮互联网科技 互联网时代科技改变生活 苏州五指互联网络科技有限 新兴科技互联网创新大赛颁奖典礼 抖集互联网科技技术咨询 珠海东科互联网科技有限公司 青岛易易互联网科技 长沙易易互联网科技有限公司 百单网互联网科技有限公司怎么样 科技股互联网 金融科技还是互联网 互联网最新的科技有限公司 互联网科技公司招聘 速维有品互联网信息科技(苏州)有限公司 华夏恒生互联网科技013171 西安小鹰速贷互联网科技有限公司 南博望互联网科技有限公司 东风日产互联网科技公司叫什么
0