我有一个关于垃圾收集器和Object.finalize()的问题。我创建了一个实现finalize方法的类。如果我在DDMS中运行我的应用程序并强制使用GC,那么在我的类对象上就会调用finalize,没有任何引用。但是,如果我在我的应用程序中调用System.gc(),则不会调用finalize。离开应用程序时调用System.exit(0)不会导致最终结果。为什么不调用finalize?
发布于 2013-09-29 12:10:16
但是,如果我在我的应用程序中调用System.gc(),则不会调用finalize。
这是因为您的对象不是垃圾收集的。gc()没有完成一个完整的GC。相反,它收集一些垃圾,然后返回。
离开应用程序时调用System.exit(0)不会导致最终结果。
这是因为您的进程正在被终止。终结器不会在进程终止时运行。而且,正如拉格哈南丹所指出的,请不要打电话给System.exit(0)。
https://stackoverflow.com/questions/19077798
复制相似问题