finalize 方法会被调用多少次?谁在 Java 中调用 finalize() 方法?

java 8object oriented programmingprogramming更新于 2025/4/29 0:52:17

finalize() 方法属于 Object 类。在关闭对象之前,垃圾收集器会确保不再有对它的引用,并调用它的 finalize() 方法。

因此,一旦您重写其中的 finalize() 方法,您就可以执行所有清理活动,例如关闭数据库连接、网络连接等资源。

protected void finalize throws Throwable{}

它在程序执行期间仅被调用一次。

以下是有关 finalize 方法的一些值得注意的要点。

  • 由于此方法属于 Object 类,它是 Java 中所有类的超类,因此您可以从任何类中重写它。

  • 这是一个空方法,但您可以通过编写代码来执行所需的清理活动来重写它。

  • 建议使用 try catch围绕在 finalize() 方法中编写的清理代码(关闭连接等)。

  • 允许显式调用 finalize() 方法。它就像任何其他方法一样执行。

  • 当您显式调用 finalize() 方法时,如果垃圾收集器当前正在执行该方法,则会引发未经检查的异常。

  • 同样,当您显式调用 finalize() 方法时,在执行过程中,当垃圾收集器尝试调用该方法时,将引发未经检查的异常。

示例

public class FinalizeExample{
   public void finalize(){
      System.out.println("finalize method is executed...");
   }
   public static void main(String args[]){
      FinalizeExample obj = new FinalizeExample();
      obj.finalize();
      System.gc();
   }
}

输出

finalize method is executed...

相关文章