2011-05-13 1 views
0

しばらくしてOutOfMemory例外を満たしていますが、XMLビューをビットマップで拡張しています。Android、不可能なメモリリーク、どのように日食でそれを見つけるのですか?

多くのビットマップを使用していますが、XMLから常に膨らんだアクティビティを何回も開いた後で問題が発生します。

私はMATメモリでチェックします。 最初の質問:自分のアクティビティをメモリに保持しません - アクティビティの名前にフィルタをかけると、オブジェクト= 0が返されますが、一部のアクティビティでは RetainedHeap> = 302と表示されます。リーク?

その後、異なる時点で自分の記憶を比較して、作成されたオブジェクトを確認しようとします。しかし、私は何か重要なものを見つけることができません。

私の質問は、私がメモリ内のアクティビティを保持していないと、リークの原因になる可能性があることですか? どのツール/方法を使用してそれを見つけるのですか?

よろしく、

オリヴィエ

答えて

0

アクティビティが破棄されたときnullにビットマップへのすべての参照を設定してみてください。これはあなたの質問に答えないかもしれませんが、それはあなたの問題を解決するはずです。

0
  1. あなたは大きなソースイメージを持っている場合は、ターゲットにそれらをスケールサイズ:Strange out of memory issue while loading an image to a Bitmap object

  2. キャッシュビットマップ(ただしドロワブル!!)リスト(またはマップ)とonRetainNonConfigurationInstance()に保存:http://developer.android.com/resources/articles/faster-screen-orientation-change.html

+0

答えていただきありがとうございます。私はdrawableをキャッシュしていますが、私は自分のアクティビティを破棄するとコールバック参照をクリアします。 Drawableをキャッシュするほうがよいと思います。それ以外の場合は、ビットマップをimageViewに設定するたびに間接的に新しいDrawableを作成するからです。私の問題はもっとありますが、私はビットマップ上にリークを持っていますが、私はメモリ内のアクティビティを保持しませんが、どのようにこのリークを見つけることができますか? – Olivier

関連する問題