一.背景: Java程序员编写程序时,对于新建的对象,当不再需要此对象时,不必去释放这个对象所占用的空间,这个工作是由Java虚拟机自己完成的 ,即内存回收或垃圾回收. 二.如何知道一个对象所占用的空间可以回收了呢? 1.常用的一种算法是引用计数法,如果一个对象的引用为0了,那就可以回收了.但是对于这种方法致命缺陷,当对象之间存在循环引用的时候,A引用B,B引用A,这样A和B的引用就一直不会为0,那就无法回收了. 2.Java采用的算法为根搜索算法,以一系列GC Roots为起点,向下搜索,如果