我个人觉得:
当cpu有空闲的时候垃圾回收器就开始工作了,没有一个reference 指向这个对象时,立刻回收这段内存!
如果是倒快要用尽才回收,那么有很大内存,垃圾收集器不就不会工作了吗?
想想也不太可能

解决方案 »

  1.   

    垃圾回收器是一个等级低的线程,它在CPU空闲时就开始扫描程序,
    当发现没有一个reference 指向这个对象时
    那么这个对象的内存就被释放掉了
      

  2.   

    个人以为:第二意思是这样的:回收回来的内存暂时先不用,等JVM到快要耗尽内存时,再使用这部分内存
      

  3.   

    可以去看看《Practical Java中文版》
      

  4.   

    我认为无法确切得知具体什么时候它就运行了,
    cpu越空闲它越容易运行,同样内存资源剩的越少它也越容易运行。
      

  5.   

    楼主,我前几天发了一贴根你的问题很类似,
    大家的回答也都比较好,
    你可以去看看,已经结题了。http://expert.csdn.net/Expert/topic/2438/2438579.xml?temp=.2045862
      

  6.   

    关于这个问题我专门请教过IBM公司的WebSphere的设计师,据他们所说无论gc还是finalize都不是直接运行内存回收,而是提交了这个进程,至于什么时候运行谁也不知道,不过有一点可以肯定,在内存耗尽的时候会运行内存回收。
    但是我做过测试,利用在WebSphere平台上运行gc会直接运行内存回收,后来请教IBM公司的工程师,据称是IBM公司自己改写过gc功能。
      

  7.   

    这于运行于底层的jvm中gc的实现策略有关。而sun在jvm的规范里对此好象没有做出具体的限制,这样,就有可能不同的jvm,其gc运行的时机有所不同。FYI