我试着做一些例子来了解finalize方法是如何工作的。但是我无法在我预期的控制台中获得输出。在obejct被销毁之后,为什么finalize方法在以下示例中不起作用?
package work2;
class Foo {
protected void finalize() {
System.out.println("Object Destroyed."); // not working. why ?
}
}
public class part3 {
public static void main(String[] args) {
Foo bar = new Foo();
bar = null; // destroying the object (Garbage Collection)
System.out.println("finished");
}
}
程序输出
finished
感谢。
答案 0 :(得分:1)
GC不保证在任何时候运行,并且没有太多垃圾,所以它不需要在那时运行
你可以使用它:
System.gc();
提示JVM现在是运行GC的好点,但这并不能保证GC能够运行,而且通常是一个坏主意。
如果您希望在使用后清除某些内容try-with-resources
更合适。