给对象一个引用计数器,每当有一个地方引用它时,计数器值就加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,不会被采用该方法的垃圾处理器处理掉