可达性分析算法

  实现思路:GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),对一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。

  优点:可以很好的解决对象相互循环引用的问题。

对象object 5、object 6、object 7虽然互相有关联,但是他们到GC Roots是不可达的,所以他们将会被判定为是可回收的对象。

在Java语言中,可作为GC Roots的对象包括下面几种:

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

猜你喜欢

转载自www.cnblogs.com/gogogofh/p/11113852.html