Java 虚拟机面试二
垃圾收集
【困难】如何判断 Java 对象是否可以被回收?
判断 Java 对象是否可以被回收有两种方法:
- 引用计数法
- 可达性分析法
引用计数法
引用计数算法(Reference Counting)的原理是:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。
引用计数算法简单高效,但是存在循环引用问题——两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。