【发布时间】:2013-12-29 23:12:54
【问题描述】:
我已阅读该对象在以下情况下符合垃圾收集条件。
- 该对象的所有引用都明确设置为 null。
- 在块内创建对象并且引用超出范围 一旦控制退出该块。
- 如果一个对象持有另一个对象的引用,则父对象设置为 null 对象以及当您将容器对象的引用设置为 null、child 或 包含的对象自动成为垃圾 收藏。
但是有没有办法确定符合垃圾收集条件的对象是由垃圾收集器收集的?
【问题讨论】:
-
您为什么需要知道这些?有什么具体原因吗?
-
只要您引用对象(直接或间接),它就没有资格进行垃圾回收。所以,当它最终被垃圾回收时,你不再有对它的引用,这意味着你无法识别它——你必须完全忘记它,否则它不会被垃圾回收。跨度>
-
@Nambari.. 我正在阅读有关垃圾收集器工作的文章,这个问题出现在我的脑海中。没有其他原因。
-
就像其他人所说的:你唯一的选择是
finalize方法。但是,我必须告诉你:我编写了成千上万行 Java 代码,但我从未发现自己处于需要使用finalize的情况。与其他程序员交谈时,它永远不会出现。除了满足您对此的任何好奇心外,我强烈建议您反对使用此方法。我真的不知道他们为什么不弃用它...... -
@RaduMurzea:有一些good uses of the finalize method,尽管它们非常罕见。