Object类finalize()

垃圾收集时由对象上的垃圾收集器调用
确定没有对该对象的更多引用。
子类重写{@code finalize}方法进行处理
系统资源或执行其他清理。
<P>
{@code finalize}的一般合同是它被调用
if和何时Java <font size =“ - 2”> <sup> TM </ sup> </ font>虚拟
机器已确定不再有任何
意味着任何拥有的线程都可以访问此对象
尚未死亡,除非由于采取了行动
完成一些准备好的其他对象或类
最终确定。 {@code finalize}方法可以采取任何行动,包括
使这个对象再次可用于其他线程;通常的目的
然而,{@code finalize}是在之前执行清理操作
该对象不可撤销地被丢弃。例如,finalize方法
对于表示输入/输出连接的对象可能执行的操作
显式I / O事务以在对象之前断开连接
永久丢弃。
<P>
类{@code Object}的{@code finalize}方法不执行
特别行动;它只是正常返回。子类
{@code Object}可能会覆盖此定义。
<P>
Java编程语言不保证哪个线程会
为任何给定对象调用{@code finalize}方法。它是
但是,保证调用finalize的线程不会
在finalize结束时持有任何用户可见的同步锁
调用。如果finalize方法抛出未捕获的异常,
忽略该异常并终止该对象的终止。
<P>
在为对象调用{@code finalize}方法之后,没有
在Java虚拟机再次执行之前,将采取进一步操作
确定该对象不再具有任何手段
任何尚未死亡的线程都可以访问,包括可能的线程
其他准备完成的对象或类的动作,
此时可以丢弃该对象。
<P>
Java永远不会多次调用{@code finalize}方法
任何给定对象的虚拟机。
<P>
{@code finalize}方法引发的任何异常都会导致
要暂停此对象的最终确定,否则
忽略。
     *
@throws Throwable这个方法引发的{@code Exception}

    protected void finalize() throws Throwable { }

原文地址:https://www.cnblogs.com/huiandong/p/9477505.html