Android finalize() 和 System.exit()|System.gc()

标签 android garbage-collection system finalize

我有一个关于垃圾收集器和 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/

相关文章:

java - 线程池工作线程被 Runnables 淹没导致 JVM 崩溃

java - 为什么CMS收集器在初始标记阶段收集年轻代的根引用?

java - Android ImageView 不会清除

java - SYSO(System.out.println())的作用是什么?

java - 使用 Java 录制系统声音

android - 纵向使用相机

php - Android向数据库发送纬度和经度时出现空指针异常

java - 计时器和排行榜

linux - killall(1) 等效系统调用或 C 库调用

android - AppBarLayout 以编程方式更改偏移量