2016-05-14 8 views
0

私はオブジェクトがガベージコレクションの弱い参照を渡すときを観察するための仕組みを構築しました。数秒ごとに、渡されたすべてのオブジェクトがログに記録され、nullではありません。Android - これはメモリリークですか?

私は、特定のアクティビティのコンテキストがnullになったときにこれを観察して、そこにメモリリークがないことを確認しました。

このツールでは、私がヒットしてアクティビティが終了すると、アクティビティのコンテキストが無効にならないことに気付きました。私がデバイスモニタからGCを発生させた場合、または他のアクティビティをナビゲートすると、最終的にガーガージが収集されます。

すぐに無効にする必要があると考えました。これがメモリーリークを構成するのでしょうか、それとも私が心配すべきことですか?

+0

メモリキャッシュに移動されている可能性はありません。このメモリスペースが必要なときはいつでも、GCはそれを収集して削除してより多くの領域を確保します。 – Omar

+2

[Leakcanary](https://github.com/square/leakcanary)は、これらの種類の問題を見つけるためのライブラリが本当に使いやすく便利です。 –

+0

これは面白そうです...私はそれを試してみます。 LeakCanaryの場合は – Anonymous

答えて

2

メモリモニタを確認し、アプリをナビゲートするときにfreeallocatedのグラフを見てください。 allocatedグラフは時間がたつにつれて減少することがわかります。freeグラフの上部に近づいたりオーバーシュートしたりすることがよくあります。つまり、ガベージコレクションが発生します。

すぐに無効にする必要があると考えました。これがメモリーリークを構成するのでしょうか、それとも私が心配すべきことですか?

いいえ、すぐに無効にすることはできませんが、GCが開始されたときにのみ無効にしてはいけません。

関連する問題