深入理解JVM学习笔记(二十、JVM 垃圾回收机制---如何判断对象是否为垃圾【可达性分析法】)

                                                               可达性分析法

        在主流的商用程序语言中(Java和C#),都是使用可达性分析算法判断对象是否存活的。这个算法的基本思路就是通过一系列名为GC Roots的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,下图对象object5, object6, object7虽然有互相判断,但它们到GC Roots是不可达的,所以它们将会判定为是可回收对象。

深入理解JVM学习笔记(二十、JVM 垃圾回收机制---如何判断对象是否为垃圾【可达性分析法】)_第1张图片

        

一般来说,如下情况的对象可以作为GC Roots:

  1. 虚拟机栈(栈桢中的本地变量表)中的引用的对象
  2. 方法区中的类静态属性引用的对象
  3. 方法区中的常量引用的对象
  4. 本地方法栈中JNI(Native方法)的引用的对象

你可能感兴趣的:(JVM)