原理:通过一系列被称为"GC Roots''的对象作为起始点,从这些节点向下搜索,搜索所走过的路径叫做引用链,当一个节点到GC Roots没有任何引用链时,证明该对象不可用了。
说明:
(2.1)、红色代表不可达对象(可回收对象)
(2.2)、千万注意!!!!!上图并不是说方法区全可达,虚拟机栈部分可达,
本地方法栈全部不可达,而只是为了说明这三个部分可以作为GC
Roots!
在Java中,可以被作为GC Roots的对象有以下几种:
1.虚拟机栈中引用的对象(栈帧中的引用变量表)
2.方法区中类静态属性引用的对象
3.方法区中常量引用的对象
4.本地方法栈中Native方法(JNI)引用的对象