1.判断对象是否已死的两种方法
1.1 引用计数法
给对象添加一个引用计数器,如果其他对象引用计数器加一,引用失效计数器减一,当计数器为0的时候,则对象就认为是死亡的状态
优点:实现简单,效率高
缺点:无法解决循环引用的问题,
1.2 可达性算法(目前jvm用的gc方法)
通过GC roots 对象作为起始点,从节点向下搜索,当一个对象到GC roots没有引用链相连,则判断对象已死.
在Java中,可作为GC roots 的对象包括下面几种
(1) 栈中直接引用的对象
(2) 方法区中类静态属性引用的对象.
(3) 方法区中常量引用的对象
(4) 本地方法栈中JNI(Native方法)引用的对象