标签归档:GC

JVM——(2)垃圾收集器

对象死了吗

垃圾收集器的目的就是回收掉虚拟机内存中无用的对象,而这些无用的对象我们称为“死掉的对象”。那么怎么判断一个对象已经“死掉”,即怎么判断一个对象是无用对象呢?

引用计数算法(Reference Counting)

就是给每个对象添加一个引用计数器,每当一个地方引用这个对象,计数器的值就加1,引用失效计数器就减1。那么,当计数器的值为0时,这个对象就是无用对象了,已而为没有引用指向这个对象,也就没办法再使用对象了。
这种垃圾收集器算法实现简单判定效率高,但是有一个问题:无法处理对象相互引用的情况。这种情况下,相互引用的对象的引用计数器值都大于0,实际上相互应用的对象已经不能再被访问。

Java虚拟机不是通过引用技术算法来判断对象是否存活的,所以这个例子中,对象依然被回收了。
继续阅读