哪些内存需要回收
在Java堆中存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要知道哪些对象还“存活着”,哪些对象已经”死去“。
引用计数算法
引用计数法的实现:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1,当引用失效时,计数器就减1,只要计数器为0的对象就是不可能被使用的。
这个算法实现简单,效率也很高,但是当存活对象中,存在相互引用的时候,这算法就解决不了。所以Java中的GC并没有采用引用计数法来管理内存。(后面例子分析会根据GC日志看出相互引用的对象被回收了)