【发布时间】:2015-04-26 02:46:16
【问题描述】:
如果我重写 finalize() 并引用一个对象会发生什么。该对象会被垃圾收集吗?从内存中清除该对象的另一种方法是什么?
【问题讨论】:
-
不要那样做。据推测,它会造成内存泄漏。你想解决什么问题?
-
你想达到什么目的?
标签: java
如果我重写 finalize() 并引用一个对象会发生什么。该对象会被垃圾收集吗?从内存中清除该对象的另一种方法是什么?
【问题讨论】:
标签: java
【讨论】:
Finalize() 被设计为由垃圾收集器调用以删除取消引用的对象,如果在调用 Finalize() 之前重新引用了一个对象,那么您可以简单地阻止 GC 销毁它,因为它现在具有引用再次证明它是安全的,假设它在取消引用期间没有被使用,这可能会导致问题。
【讨论】:
请记住,JVM 只调用了一次 finalize,因此子序列 GC 只会运行,而不会再有机会重新分配引用、保存对象等。可能会导致内存泄漏。
【讨论】: