闲来无事,在家看了THINK IN JAVA。虽然工作一年了,很多内容还是看不大懂。例如题目所示。恳请各位大侠帮忙解惑!

解决方案 »

  1.   

    垃圾回收器是一个级别很低的线程,它通过不定时监测程序使用的内存中被占用的动态分配的内存内的对象是否还存在它的引用来判断是否该回收那个内存单元,如果不存在则回收,否则相反~~并不是只要监测到就会回收的,因为垃圾回收器线程的低级别,所以当另一个级别比它高的线程跟他同时竞争运行时间时,前者优先运行,我们通过Thread或者继承Runnable的线程都级别都比它高,所以你无法知道垃圾回收器何时回收,System.gc()只是建议垃圾回收器进行回收处理,调用它并不能保证它回立即回收。
    如果你的内存空间足够大(1-2G)那么有必要回收几K的东西吗??浪费
      

  2.   

    本人不大了解JAVA的垃圾回收机制,但是有句话,我是知道的,也是正确的,JAVA 垃圾回收机制是什么时候回收,是我们程序员所不能控制的,他是按一定的时间间隔去"扫描"回收"垃圾".但是到底间隔多久,我也不知道,也许连间隔的时间每次都不知道!
      

  3.   

    不能立即回收的一个原因在于GC进行回收的开销还是比较大的,如果让程序员来控制的话,可能系统的内存空间还有很多空余的时候程序员就进行回收了,浪费系统资源,所以设计成jvm自动监测,当发现内存空间临近不够时再进行回收,这样比较好一点
      

  4.   

    垃圾回收器也做不到完全回收,如代码写的有问题的话就是造成回收不了,导致导致内存泄漏,时间长了可能导致out of memorry。