判断对象是否存活方法
引用计数算法
引用计数算法可以这样实现:给每个创建的对象添加一个引用计数器,每当此对象被某个地方引用时,计数值+1,引用失效时-1,所以当计数值为0时表示对象已经不能被使用。引用计数算法大多数情况下是个比较不错的算法,简单直接,也有一些著名的应用案例但是对于Java虚拟机来说,并不是一个好的选择,因为它很难解决对象直接相互循环引用的问题。
优点:
实现简单,执行效率高,很好的和程序交织。
缺点:
无法检测出循环引用。
public class App {
public static void main(String[] args) {
Test object1 = new Test();
Test object2 = new Test();
object1.object = object2;
object2.object = object1;
object1 = null; object2 = null;
}
}
class Test {
public Test object = null;
}
这两个对象再无任何引用, 实际上这两个对象已 经不可能再被访问, 但是它们因为互相引用着对方, 导致它们的引用计数都不为零, 引用计数算法也 就无法回收它们 。
但是在java程序中这两个对象仍然会被回收,因为java中并没有使用引用计数算法。