When the garbage 
collector is ready to release the storage used for your object, it will first call finalize( ), and 
only on the next garbage-collection pass will it reclaim the object’s memory.当回收器释放对象内存空间时,首先调用finalize()方法,但是仅仅当下一次垃圾回收传入时才回收内存红色怎么理解

解决方案 »

  1.   

    http://topic.csdn.net/u/20090723/22/d8c9ca4b-9926-4604-ab4c-dd5fd4b5aa74.html
      

  2.   

    finalize的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.
    finalize()方法并不是立刻就会执行的,执行的时间完全由系统来决定。所以很有可能的情况是已经创建了20000个对象,才开始其中的某一个对象的清除工作(这可能和时间或者系统内容的占用有关)
      

  3.   

    我的理解是,当jvm准备进行垃圾回收的时候,它就先调用finalize方法,相当于垃圾回收前的准备活动,这个方法执行完后,就可以等待(注意,不是立刻)到了jvm认定的时刻,开始垃圾回收
      

  4.   

    就是指 当Java虚拟机 下一次实现垃圾收集是在回收这片内存 儿不立即回收
    他们是属于不可达的 
      

  5.   

    垃圾回收并不是时时都会发生的,毕竟他是非常耗资源的。只有当垃圾回收器觉得空间不足时,或者程序员强制调用System.gc()时才会进行垃圾回收,
    而finalize()则是程序员希望在对象被回收前的处理工作。有点像c++里面的destory(虽然两者还有一点区别)总之,垃圾回收不是时时发生的,也不应该有程序员来控制