Java为什么在销毁对象后没有完成方法工作?

时间:2017-09-28 20:24:37

标签: java finalize

我试着做一些例子来了解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

感谢。

1 个答案:

答案 0 :(得分:1)

为什么GC没有发生

GC不保证在任何时候运行,并且没有太多垃圾,所以它不需要在那时运行

暗示

可以使用它:

System.gc();

提示JVM现在是运行GC的好点,但这并不能保证GC能够运行,而且通常是一个坏主意。

清理

如果您希望在使用后清除某些内容try-with-resources更合适。