判断是否可达: 需要和根节点有依赖关系
如果没有和我的 gc roots 有任何引用的情况下, 这时候 gc 就认为是不可达对象
根搜索算法的基本思路就是通过一系列名为 "GC Roots" 的对象作为起始点, 从这些节点开始向下搜索, 搜索所走过的路径称为引用链(Reference Chain), 当一个对象到 GC Roots 没有任何引用链相连时, 则证明此对象是不可用的.
在 Java 语言中, 可以作为 GCRoots 的对象包括下面几种:
(1). 虚拟机栈 (栈帧中的局部变量区, 也叫做局部变量表) 中引用的对象.
(2). 方法区中的类静态属性引用的对象.
(3). 方法区中常量引用的对象.
(4). 本地方法栈中 JNI(Native 方法)引用的对象.
来源: http://www.bubuko.com/infodetail-3091776.html