私はこのようなクラス構造を持っています。Androidアプリケーションのメモリリーク
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
@ Memme gcを強制するのは悪い考えです!メモリリークを止めて、それを隠蔽する必要はありません。 – apmartin1991
@ apmartin1991もちろん。しかし、私は確かにそれをチェックしただけです。とにかく、Cで新しいオブジェクトをインスタンス化してnullにするという事実は、その特定のインスタンスのみを収集します。しかし、私は間違っている可能性があります:) – Memme