class Example {
@Override
protected void finalize() {
System.out.println("Object getting garbage collected");
}
}
public class GarbageCollectionDemo {
public static void main(String [] args) {
Example e1 = new Example();
{
Example e2 = new Example();
}
e1.finalize();
}
}
我想检查输出是否显示了当finalize()
被调用,并且当目标实际上是越来越删除。但是我无法跟踪,是否因为它根据JVM指定该对象将被垃圾收集?如果我们覆盖finalize()
方法会发生什么?我们是否必须自己明确地调用它?那么为什么Netbeans建议将finally
块添加到super.finally()
?如何确定何时finalize()方法被调用
可能重复[何时在Java中调用finalize()方法?](http://stackoverflow.com/questions/2506488/when-is-the-finalize-method-called-in-java) – Reinard
' finalize()'不*与'finally'块相同。 – RealSkeptic
如果调用'finalize()',它并不意味着该对象被垃圾回收。 –