Object.JavaFinalize 方法

定义

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

[Android.Runtime.Register("finalize", "()V", "GetJavaFinalizeHandler")]
protected virtual void JavaFinalize ();
[<Android.Runtime.Register("finalize", "()V", "GetJavaFinalizeHandler")>]
abstract member JavaFinalize : unit -> unit
override this.JavaFinalize : unit -> unit
属性

例外

注解

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

finalize 一般约定是,在 Java&交易时调用该对象;虚拟机已确定,没有任何方法可供尚未终止的任何线程访问此对象,除非其他对象或类(已准备好完成)执行了一项操作。 方法 finalize 可以执行任何操作,包括使此对象再次可供其他线程使用;但是, 的 finalize通常用途是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的 对象的 finalize 方法可能会执行显式 I/O 事务,以在永久放弃对象之前中断连接。

finalizeObject的 方法不执行任何特殊操作;它只是正常返回。 的 Object 子类可能会重写此定义。

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

finalize为对象调用 方法后,在 Java 虚拟机再次确定没有任何方法可供尚未终止的任何线程访问此对象之前,不会执行进一步的操作,包括其他对象或类可能执行的操作,这些操作已准备好完成, 此时,对象可能被丢弃。

对于任何给定对象, finalize Java 虚拟机绝不会多次调用 方法。

方法引发 finalize 的任何异常都会导致此对象的终结停止,但将被忽略。

java.lang.Object.finalize()Java 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

适用于