gpt4 book ai didi

Java为什么销毁对象后finalize方法不工作?

转载 作者:行者123 更新时间:2023-12-02 12:11:53 24 4
gpt4 key购买 nike

我尝试做一些示例来了解 Finalize 方法的工作原理。但我无法在控制台中得到我期望的输出。为什么在下面的示例中,在对象被销毁后,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更合适。

关于Java为什么销毁对象后finalize方法不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46477716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com