【发布时间】:2016-07-04 09:36:12
【问题描述】:
我有一个看起来像这样的类结构。
class A
{
B b;
A()
{
b = new B();
b.a = this;
}
}
class B
{
A a;
}
class C
{
A a = new A();
//a is ready for Garbage collection
a = null;
}
在活动 Destroy() 中,我将设置变量 a = null。但在堆上,我仍然可以看到变量 b 包含 B 的引用。
谁能解释一下?
【问题讨论】:
-
也许只是还没有收集到。尝试强制 gc?
-
@Memme 强制 gc 是个坏主意!你需要阻止内存泄漏而不是试图掩盖它。
-
@apmartin1991 当然。但我会检查它只是为了确定。无论如何,您在 C 中实例化一个新对象并将其设置为 null 的事实将仅收集该特定实例。但我可能错了:)
标签: android memory-leaks memory-leak-detector