java提供了一个方法  System.gc().文挡说的挺模糊的.
  我只想弄明白,调用这个方法后,垃圾回收器是否立即执行?还是回收器内部会根据一些条件判断是否执行呢.
  因为很多资料都说,程序员不能显示的调用垃圾回收器.但我认为这就是显示的调用了垃圾回收器``
  希望大家能帮我解惑..谢谢

解决方案 »

  1.   

    不是调用了就立即执行,而是有垃圾收集器自动分撇何时收回垃圾。 System.gc().就好比是,通知垃圾收集器,我内存用完了,你可以收回了,至于好久收回,那是收集器的事。
      

  2.   

    比如:class   Test{   
      public   void   sayit(){   
      System.out.println("sayit");
      }   
      public   static   void   main(String[]   args){   
      new   Test();   
      System.gc();   
      }   
      }   main函数里,new test() 没有被引用,所以,调用System.gc();之后就会符合垃圾回收的要求,一般线程不要繁忙的情况下都会被回收。
      

  3.   

    1楼说得有点小问题。
    System.gc()是一个异步方法,所以调用后并不会立即执行释放内存的操作
    垃圾回收器是一个比较复杂的机制
    每个公司开发的JVM版本,对于垃圾回收器机制和性能上也有微小的差别
    IBM网站有关内存泄露的一篇文档上有提到以上说法
    另外为了给你彻底解惑
    我找了篇资料,你可以看下。
    http://www.knowsky.com/364448.html