new Tree();
System.gc();
执行完毕后,就什么也没有了,
08:   Tree treeObject = new Tree();
09:   System.gc();
执行完之后还有个 treeObject

解决方案 »

  1.   

    IBM上面有篇好文章说明了gc的实现情况,对于Test1来说,new Tree()生成的对象还被treeObject引用,gc无法回收new Tree();对于Test2,new Tree生成的对象没有被任何对象引用,被gc回收
      

  2.   

    http://www-900.ibm.com/developerWorks/cn/java/j-leaks/index.shtml
      

  3.   

    因为第一个程序的Tree还不是垃圾呢。只有没有被任何句柄引用的对象才是垃圾。在第一个程序中,当调用gc()时,treeObject还没有出作用域,因此Tree的这个对象还有一个引用也就是treeObject,因此不是垃圾不会被回收。而在第二个程序中调用gc()时Tree对象没有任何句柄引用,所以是垃圾回收之。