确定不再有引用指向的对象,在垃圾收集时由JVM垃圾收集器调用对象的finalize方法。
在JVM进行垃圾回收(通常是低级别的线程)时,处理需要被回收的对象,gc线程调用一次finalize方法,如果这时对象被重新引用上了,就不会被清理了。
目前还没重写过…
我们来看个具体的例子,这样会印象深刻些
public static FinalizeDemo FD = new FinalizeDemo();
public static void main(String[] args) throws InterruptedException {
FinalizeDemo.FD = null;
System.gc();
//确保gc线程会执行
Thread.sleep(1000);
System.out.println(FinalizeDemo.FD);
}
@Override
protected void finalize() throws Throwable {
FinalizeDemo.FD = new FinalizeDemo();
System.out.println("finalize() 被调用");
}
//输出 finalize() 被调用
//jdk_demo2.FinalizeDemo@4e25154f
通过这个例子就是想让大家知道,当对象重写了Object的finalize方法时,当此对象需要被回收时,finalize方法会被调用一次。