Java 为什么销毁对象后 finalize 方法不起作用?
Java Why don't finalize method work after destroying object?
我试着做一些例子来了解 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
谢谢。
为什么 GC 没有发生
GC不保证在任何时候运行,垃圾不多,所以不需要运行那个时候
暗示
你可以使用这个:
System.gc();
向 JVM 提示现在是 运行 GC 的好时机,但这并不能保证 GC 会 运行,而且通常不是一个好主意。
清理
如果你想在使用后清理一些东西try-with-resources
更合适。
我试着做一些例子来了解 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
谢谢。
为什么 GC 没有发生
GC不保证在任何时候运行,垃圾不多,所以不需要运行那个时候
暗示
你可以使用这个:
System.gc();
向 JVM 提示现在是 运行 GC 的好时机,但这并不能保证 GC 会 运行,而且通常不是一个好主意。
清理
如果你想在使用后清理一些东西try-with-resources
更合适。