finalize() 方法

Java 允许定义这样的方法,它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做 finalize( ),它用来清除回收对象。
例如,你可以使用 finalize() 来确保一个对象打开的文件被关闭了。
在 finalize() 方法里,你必须指定在对象销毁时候要执行的操作。

  1. public class FinalizationDemo {
  2. public static void main(String[] args) {
  3. Cake c1 = new Cake(1);
  4. Cake c2 = new Cake(2);
  5. Cake c3 = new Cake(3);
  6. c2 = c3 = null;
  7. System.gc(); //调用Java垃圾收集器
  8. }
  9. }
  10. class Cake extends Object {
  11. private int id;
  12. public Cake(int id) {
  13. this.id = id;
  14. System.out.println("Cake Object " + id + "is created");
  15. }
  16. protected void finalize() throws java.lang.Throwable {
  17. super.finalize();
  18. System.out.println("Cake Object " + id + "is disposed");
  19. }
  20. }
  21. /*
  22. $ javac FinalizationDemo.java
  23. $ java FinalizationDemo
  24. Cake Object 1is created
  25. Cake Object 2is created
  26. Cake Object 3is created
  27. Cake Object 3is disposed
  28. Cake Object 2is disposed
  29. */