我个人的观点:
垃圾回收器与垃圾存在这样的关系:垃圾回收只在必要的时候启动,它对垃圾的检查是随启动而进行的。诸如如下简单语句:Float a=new Float(3.00F);a=null; 此时垃圾产生,但是垃圾收集并没有随之启动,故在执行垃圾回收时候检索速度很慢,效率低下。好像,现在的垃圾回收技术能再a=null之后,进行垃圾分块但并没有进行收集,从这个意义上来说,a=null之后,垃圾回收机制就已经产生效果了!个人观点而已

解决方案 »

  1.   

    System.gc的作用是启动垃圾回收器将垃圾从内存中清除吗?//非,垃圾收集器并不受控制,它只在内存不够用时才启动,这样的设计效率较高finalize()方法是在Systen.gc启动后 在垃圾从内存清楚前才执行的吗?//一旦GC启动,会去执行此方法!!!你可以在里面放和清理内存不关的清除工作!比如
      画面的线条等等~~~~
      

  2.   

    system.gc是强制性的回收。是基于用户要求的。一般情况下,没有必要使用system.gc。当然,system.gc还有一个功效就是用来检查程序是否有错误,因为强制回收了某些对象以后,程序潜在的不稳定性的因素可能会出现。这样有利于BUG检查。
    而finalize()则更是没有必要使用的一个函数,除非你在Java里面调用了非Java语言写的内容。比如:你用C写的malloc(),则在最后不需要的时候需要用java的finalize()中调用C中相应的函数来把C生成的函数清理掉。Java的GC是不会发现这些用非Java语言生成的对象的。在Java里面,一切都是对象,所以就没有什么东西能够逃离GC。Java的GC还是比较有效率的,看《Think in Java》就知道啦。
      

  3.   

    System.gc()可以强制启动垃圾回收器来回收垃圾,垃圾回收器回收垃圾是不是就是把垃圾(没有引用变量的对象)从内存中释放掉?
      

  4.   

    System.gc()可以强制启动垃圾回收器来回收垃圾,垃圾回收器回收垃圾是不是就是把垃圾(没有引用变量的对象)从内存中释放掉?
      

  5.   

    System.gc()可以强制启动垃圾回收器来回收垃圾,垃圾回收器回收垃圾是不是就是把垃圾(没有引用变量的对象)从内存中释放掉?