如果终结器使对象可达,该怎么办?

Bar*_*lom 6 java garbage-collection jvm memory-management finalizer

在Java中,finalize当它即将被垃圾收集时被调用一个对象(它会覆盖它),所以当它无法访问时.但是如果终结器使对象再次可达,那么会发生什么呢?

Jon*_*eet 10

然后,对象基本上不会收集垃圾.这称为物体复活.搜索该术语,你应该得到一堆有趣的文章.正如吉姆所说,重要的一点是终结者只会运行一次.


Hen*_*ann 9

在再次无法访问之前,不会收集该对象.

根据JavaDoc,不会再次调用finalize().


Jim*_*son 7

如果仔细阅读API描述,您将看到终结器可以使对象再次可访问.该对象在被无法访问(再次)之前不会被丢弃,但finalize()不会被多次调用.