2012年3月7日水曜日

開発メモ③メモリリーク

以下のエラーの原因と対処法
java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
allocation too large for this process. 


アクティビティを別のクラスへ参照渡ししている場合
原因
画面遷移などでアクティビティが破棄されてしまうため


対処法
アクティビティの参照渡しを
this→getApplication またはgetApplicationContextに変更する




ImageButtonやImageViewなどからメンバ変数のBITMAPを使用している場合
原因
内部的な描画処理(Drawable)がBITMAPを参照しているため


対策
明示的にBITMAPを解放する
setImageDrawable(null); 

BITMAP.recycle();
BITMAP=null;

0 件のコメント:

コメントを投稿