【发布时间】:2015-02-11 05:08:57
【问题描述】:
我正在阅读《Oracle Certified Associate, Java SE 7 Programmer Study Guide》一书。
关于 finalize 方法的主题有一句话:“不能保证方法会执行,因为程序可能会在不需要垃圾收集运行的情况下终止”。
我的问题是:程序为什么在垃圾收集例程运行之前终止以及何时终止?
【问题讨论】:
-
因为它会在任何感觉或内存不足时运行。
-
这超出了规范的范围,只取决于JVM的实现
-
如果你的程序正在退出,内存无论如何都会被释放,所以垃圾回收会浪费时间和精力。
-
如果不需要,GC 为什么要运行?