finalize的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作.
垃圾收集不就是清扫么,为什么在垃圾收集期间进行一些重要的清除或清扫工作。
而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.
这里的下一次是什么意思呢??

解决方案 »

  1.   

    而且只有在下一次垃圾收集过程中,才会真正回收对象的内存内存回收是java的gc工作,不是每时每刻都做的,要有一定条件,比如时间或者内存不够之类的
    才会进行回收,所以说是下一次
      

  2.   

    当内存空间不够时,系统才调用finalize()方法,如果想手动调用可以先调用System.gc()方法
      

  3.   

    finalize所作的并不是垃圾的回收工作,而是做一些清除工作,比如文件的关闭什么的。和垃圾回收是两个概念。如果你的数据要在回收之前作一些操作,可以放在finalize中,但是finalize的执行时间是不确定的,所以用这个方法并不是一个很好的选择。
      

  4.   

    也不是调用了就立刻回收,也要看系统的心情.
    恩,可以把finalize当作C++中间的析构函数来理解