System.gc(); 只是建议 执行垃圾回收 但是他愿不愿意 是另一回事

解决方案 »

  1.   

    System.gc(); 
    只是告诉系统,这个东西可以回收了.但是系统是不是真正回收会看当前系统是否非常繁忙.
      

  2.   

    sorry,是以上5者,大家回复的太快了。
      

  3.   

    具体原因:
    程序一的new Test()没有被引用,调用System.gc()后,只要线程不繁忙(大多数情况下都有空闲),new Test()会立刻被回收。程序二,永远都不会被回收。因为在main方法内,new Test一直被引用着。
      

  4.   

    楼上正确!
    在程序二中,只要你在System.gc()之前,设置t=null,就可以回收!
      

  5.   

    feiyuegaoshan(飞跃) 说的对!t 的生命周期还在呐,sun要是垃圾回收了,有人用java才怪!
      

  6.   

    feiyuegaoshan(飞跃) 说得正确
      

  7.   

    class Test{
    public void finalize(){
    System.out.println("called finzlize()");
    }
    public static void main(String[] args){
    Test t=new Test();
                      t=null;
    System.gc();
    }
    }这样,就回收了
      

  8.   

    new Test();
    我没用过 
    讲讲他与 
    Text text=new Test();的区别??