Java對象finalize()方法

Java提供了一種在對象即將被銷燬時執行資源釋放的方法。在Java中創建對象,但是不能銷燬對象。JVM運行一個稱爲垃圾收集器的低優先級特殊任務來銷燬不再引用的所有對象。

垃圾回收器給我們一個機會,在對象被銷燬之前執行清理代碼。Object類有一個finalize()方法就是用於在對象被銷燬之前執行清理代碼,聲明如下:

protected void  finalize() throws   Throwable  {  }

Object類中的finalize()方法不會做任何事情。所以需要覆蓋類中的finalize()方法。類的finalize()方法將在類的對象銷燬之前由垃圾回收器調用。

示例

以下代碼顯示瞭如何創建一個Finalize類覆蓋對象類的finalize()方法。

class Finalize {
  private int x;
  public Finalize(int x) {
    this.x = x;
  }
  public void finalize() {
    System.out.println("Finalizing " + this.x);
  }
}
public class Main {
  public static void main(String[] args) {
    for (int i = 0; i < 20; i++) {
        Finalize f= new Finalize(i);
        f.finalize();// 可顯示的調用
    }
  }
}

上面的代碼生成以下結果。

Finalizing 0
Finalizing 1
Finalizing 2
Finalizing 3
Finalizing 4
Finalizing 5
Finalizing 6
Finalizing 7
Finalizing 8
Finalizing 9
Finalizing 10
Finalizing 11
Finalizing 12
Finalizing 13
Finalizing 14
Finalizing 15
Finalizing 16
Finalizing 17
Finalizing 18
Finalizing 19