给对象一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减少1;任何时刻,计数器为0的对象是不可能再被使用的。

客观地说,引用计数法的实现简单,判定效率也很高,在大部分情况下是一个不错的算法。但是主流的java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间的相互循环引用的问题。

相互循环引用:

class node{
    next=null;
}
node a=new node();
node b=new node();
a.nwxt=b;
b.next=a;

这时候如果:

a=null;
b=null;

那a、b都不可达了,必须被gc掉。可是引用计数不为0,不会被采用该方法的垃圾处理器处理掉

results matching ""

    No results matching ""