【发布时间】:2014-07-13 07:00:11
【问题描述】:
假设我们有这样的情况:
对象 A 无法访问,但它有一个指向有效的、可访问对象的引用。那么对象 A 会被垃圾回收吗?或者我们有内存泄漏的风险?
EDIT1
具体来说,我写了一个类三叉树,它有:
class Node {
Node left, mid, right;
int data;
...
}
我实现了 delete(Node p) 函数,它通过将 p 的父引用设置为 null 来使 p 无法访问。但是,树中的另一个节点(称为 m)会在删除 p 之前调用这个节点:
m.mid = p.mid;
delete(p); // Make p unreachable
我只是想确保 p 将被垃圾回收,但 m 仍然保留对 p.mid 的引用
【问题讨论】:
-
如果对象不可访问,它可以被垃圾回收。句号。
-
你为什么会认为这里有内存泄漏?收集无法访问的对象是 GC 的工作。
标签: java object memory-leaks reference garbage-collection