枚举GC Roots根节点
Posted BINGJJFLY
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举GC Roots根节点相关的知识,希望对你有一定的参考价值。
引言
判断对象是否被回收的算法有引用计数算法和可达性分析算法。其中可达性分析算法是根据GC Roots根节点作为起始点向下搜索引用链,找不到引用链则判定对象可回收。
可作为GC Roots根节点的对象主要是在全局性的引用(如常量、类静态属性)和执行上下文中(如栈帧中的本地变量表),现在的很多应用仅方法区就有数百兆,逐个检查里边的引用显然很耗费时间。
枚举GC Roots根节点
在HotSpot实现中,利用了空间换取时间,是使用一组OopMap的数据结构来完成的。类加载完成后,会把对象内什么偏移量上是什么类型的数据计算出来,在JIT编译过程中,在特定的位置(即安全点)使用OopMap记录下栈和寄存器哪些位置是引用,这样GC发生的时候就不用全部扫描了。
以上是关于枚举GC Roots根节点的主要内容,如果未能解决你的问题,请参考以下文章