我有一个关于垃圾收集器和Object.finalize()的问题。我创建了一个实现finalize方法的类。如果我运行我的应用程序并在DDMS中强制GC,则在我的类的对象上调用,没有引用。但是,如果我在我的应用程序中调用System.gc(),则不会调用finalize。离开应用程序时调用System.exit(0)也不会导致最终确定。 为什么没有最终确定?
答案 0 :(得分:1)
但如果我在我的应用程序中调用System.gc(),则不会调用finalize。
那是因为你的对象没有被垃圾收集。 gc()
没有执行完整的 GC。相反,它会收集一些垃圾,然后返回。
离开应用程序时调用System.exit(0)也不会导致最终确定。
这是因为您的流程正在终止。终止程序不会在进程终止时运行。而且,正如Raghunandan所说,请不要致电System.exit(0)
。