1、 垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方 法;finalize是Object类的一个方法,该方法在Object类中的声明protected void finalize() throws Throwable { }在垃圾回收器执行时会调用被回收对象的finalize()方 法,可以覆盖此方法来实现对其资源的回收。注意:一旦垃圾回收器准备释放对象占用的内存, 将首先调用该对象的finalize()方法,并且下一次垃圾回收动作发生时,才真正回收对象占 用的内存空间
2、 GC本来就是内存回收了,应用还需要在finalization做什么呢?答案是大部分时候, 什么都不用做(也就是不需要重载)。只有在某些很特殊的情况下,比如你调用了一些native 的方法(一般是C写的),可以要在finaliztion里去调用C的释放函数。
3、 Finalizetion主要用来释放被对象占用的资源(不是指内存,而是指其他资源,比如文 件(File Handle),端口 (ports),数据库连接(DB Connection)等)。然而,它不能真正有效 地工作。
Was this helpful?
0 / 0