GC Roots

JVM判断对象是否可以回收采用的不是引用计数法,而是可达性分析算法,而通过什么能够判断对象是否可达呢,就是一系列称为GC Roots的对象。

可达性算法介绍

算法基本思路就是通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。就是可以回收的。

GC Roots所包含的对象

java中,可作为GC Roots的对象包括下面几种

  • 虚拟机栈(栈帧中的本地变量表)中引用的对象。
  • 方法区中类静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法中JNI(即一般说的Native方法)引用的对象。

想了解更多技术文章信息,请继续关注wiliam.s Blog,谢谢,欢迎来访!


参考资料
《深入理解Java虚拟机:JVM高级特性与最佳实践》·周志明著·第二版

- The End -

本文标题:GC Roots

文章作者:william

发布时间:2017年09月30日 - 08:09

最后更新:2019年06月19日 - 18:06

原始链接:http://wiliam.me/2017/09/30/20170930084712.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

欣赏此文?求鼓励,求支持!