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


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

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

protected void finalize throws Throwable{}

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

以下是关于 finalize 方法的一些显著要点。

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

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

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

  • 允许显式调用 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...

更新于:2020年6月29日

938 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告