2011-08-12 9 views
2

私はカスタムリストビューを持っています。私は約200の画像をリストアップしています。画像は私のドロウアブルに保存されています。画像をビットマップに変換して、画像をビットマップとして表示しています。アクティビティが開かれるたびに、画像が一覧表示されます。このように私はそれがクラッシュします周りに10回の活動を呼び出していますし、エラーが アンドロイドアプリのメモリ不足エラーを解決する方法

java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

が、私はビットマップを再利用し、System.gs機能を使って、私は今、次の

Clamp target GC heap from 25.464MB to 24.000MB 
GC freed 322 objects/70664 bytes in 146ms 
Clamp target GC heap from 25.471MB to 24.000MB 
GC freed 2 objects/48 bytes in 138ms 
Forcing collection of SoftReferences for 10720-byte allocation 
Clamp target GC heap from 25.269MB to 24.000MB 
DEBUG/dalvikvm(15311): GC freed 5080 objects/211168 bytes in 121ms 
ERROR/dalvikvm-heap(15311): Out of memory on a 10720-byte allocation 

を得たときatlast私は、エラーを解決する方法を今、このOut of memory on a 10720-byte allocationエラー

を持って、私にあなたがSofのようにビットマップ変数を設定しようとしたことがあり、友人

+0

を追加するかもしれないいくつかのより多くを考えてみましょう、それのサイズを変更する場合がありますリソースID? –

+0

コードを投稿できますか? –

+1

私たちは何を意味するのですか?** –

答えて

1

を助けてくださいt-参照?

+0

+1のターゲットGCヒープをクランプしますが、ソフトリファレンスとは何かを少し説明する必要があると思います。 –

+0

基本的には、変数を宣言できるいくつかのタイプの参照があります。それらの1つはSoftreferencesであり、もう1つはWeakReferencesです。もっとカップルがあります。しかし、私は彼らを頭の上から忘れてしまいます。一般的には、ガベージコレクタによって参照の特定の階層を与えることによって変数が収集されるときに宣言します。ここでは、非常に明確な説明を与える良いリンクです。私よりもはるかに優れています... [参考文献](http://weblogs.java.net/blog/2006/05/04/understanding-weak-references) – HAxxor

+0

Javaソフトリファレンスの使用は、Androidアプリ。こちらhttp://developer.android.com/training/displaying-bitmaps/cache-bitmap.htmlを参照してください。http://stackoverflow.com/questions/11972441/android-outofmemory-within-different-devices – RenniePet

2

はのは、あなたの状況のた​​めにチェックリストを実行してみましょう:

  1. は、新しい活動が毎回作成し、前の1を終えることを忘れますか?もしそうなら、.hprofファイルにメモリをダンプし、MemoryAnalyzer(http://www.eclipse.org/mat/)を使ってアプリケーションをプロファイルするようにしてください。メモリー内にあるアクティビティーのインスタンス数を調べて、実際にクリーンアップされていることを確認します。
  2. あなたが同じデータをリロードしている場合、あなたはそれが
  3. あなたの描画可能でどのくらいあるを再作成する必要はありませんので、周りにこの活動を維持し、それを起動するときFLAG_ACTIVITY_REORDER_TO_FRONTを使用する場合がありますか?あなたはビットマップに画像を変換避け、そのことにより、代わりにそれらを参照することができ、あなたはあなたのImageViewの

にそれを設定する前に、私が参考になると後で

関連する問題