1 对象的自动清除

image.png

引用计数,类似于 C++ 中的 shared_ptr

  1. String method() {
  2. String a, b;
  3. a = new String("hello world");
  4. b = new String("game over");
  5. System.out.println(a + b + "Ok");
  6. a = null; // 此时 a 被释放
  7. a = b;
  8. return a;
  9. }

1.1 System.gc() 方法

  • System.gc() 是 static 方法。
  • 可以“建议 ( suggest )”系统进行垃圾回收。

1.2 finalize() 方法

  • Java 中没有析构方法
  • 但 Object 的 finalize() 有类似的功能
    • 系统在回收时会自动调用对象的 finalize() 方法
    • protected void finalize() throws Throwable {}
  • 可以在子类的 finalize() 方法中释放系统资源
    • 一般来说,子类的 finalize() 方法应该调用父类的 finalize() 方法,以保证父类的清理工作能够正常进行

      一般 finalize() 方法很少用,因为系统释放资源的时机不好掌握。

1.3 try-with-resources

image.png