Java的Object类提供了一个finalize()方法,签名如下:
protected void finalize() throws Throwable { }
该方法在JVM进行垃圾回收时之行,所以任何类都可以Override该方法,来让自己的类的实例在被回收之前,执行一系列动作。
可以通过如下两种方式来让主动让JVM进行垃圾回收:
System.gc();
Runtime.getRuntime().gc();
但是JVM不保证立即执行gc操作。
finalize()方法使用示例如下:
public class test { public static void main(String[] args) { //finalize的用法 A aa = new A(); try { aa.finalize(); } catch (Throwable e) { e.printStackTrace(); } aa = null; System.gc(); } } class A{ @Override protected void finalize() throws Throwable { System.out.println("finalize!!!!"); } } //output: // finalize!!!! // finalize!!!!