我有一个关于垃圾收集器和 Object.finalize() 的问题。我创建了一个实现终结方法的类。如果我运行我的应用程序并在 DDMS 中强制执行 GC,则在我的类的对象上调用 finalize 而没有留下任何引用。但是,如果我在我的应用程序中调用 System.gc(),则不会调用 finalize。离开应用程序时调用 System.exit(0) 不会导致最终确定。 为什么不调用 finalize?
最佳答案
But if I call System.gc() within my app finalize is not called.
那是因为你的对象没有被垃圾回收。 gc()
不执行完整 GC。相反,它会收集一些垃圾,然后返回。
Calling System.exit(0) when leaving the app doesn't cause finalize neither.
那是因为你的进程正在终止。终结器不会在进程终止时运行。并且,正如 Raghunandan 指出的那样,请不要调用 System.exit(0)
。
关于Android finalize() 和 System.exit()|System.gc(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077798/