检测对象是否已经被引用

在进行垃圾回收之前,首先要确定对象是否已经引用。

1. 引用计数算法

思路是给对象添加一个引用计数器,每当有引用则计数器加1,当引用失效时则计数器减1。计数器为0的对象就是不可能在被引用的。

Java虚拟机没有使用这种算法,因为它很难解决对象之间循环引用的问题。

2. 可达性分析算法

以GC Roots为起点向下搜索,当一个对象到GC Roots没有任何引用链相连,则判定对象是可回收的。

可作为GC Roots的对象有: