`

Java finalize方法使用

阅读更多

jdk doc

    当垃圾回收确定不再有对该对象的引用时,由对象的垃圾回收器调用。子类重写finalize方法来释放系统资源或执行其他清理。

 

    finalize的一般约定是,当 Java虚拟机已确定,任何尚未死亡的线程都不再可以通过任何方式访问此对象,除非由于已准备好完成的其他某个对象或类而执行的操作。finalize方法可以执行任何操作,包括使此对象再次可供其他线程使用finalize的通常目的,但是,是在不可撤销地丢弃对象之前执行清理操作。例如,对象的 finalize 方法,表示输入/输出连接可能执行显式 I/O 事务,用于在永久丢弃对象之前断开连接。

 

    类Object 的finalize方法不执行特殊操作;它只是正常返回。子类可能会覆盖此定义。

 

    Java 编程语言不保证哪个线程将为任何给定对象调用 {@code finalize} 方法。但是,可以保证,在调用 finalize 时,调用 finalize 的线程不会持有任何用户可见的同步锁。如果 finalize 方法引发未捕获的异常,则会忽略该异常,并终止该对象的最终化。

 

    为对象调用 {@code finalize} 方法后,在 Java 虚拟机具有再次确定,任何尚未死亡的线程都不再可以通过任何方式访问此对象,包括准备完成的其他对象或类可能的操作,此时该对象可能会被丢弃。

 

    Java 虚拟机对任何给定对象调用 finalize 方法永远不会超过一次。

 

    finalize方法引发的任何异常都会导致此对象的完成将停止,但不是忽视。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics