0

およそ640*960の解像度でより多くの画像を使用している1つのAndroidアプリケーションを開発しています。これらの画像はすべて、適切なスケーリング係数のビットマップで読み込まれます。

bitmpasをロードしているとき、ヒープサイズは増加していて、bitmpasをリサイクルしているのに減少していません。この問題に関するいくつかの理論を読んだとき、最大値は、ヒープが増加すると、まったく減少しないと言っています。

私の問題は、ヒープサイズが10MBのときにアプリケーションを閉じ、アプリケーションを再度開くと、ヒープが10Mbから始まる場合です。これにより、VMが最大ヒープメモリを超え、しばらくするとメモリ不足になります。

これのために私がしなければならないこと、そして私は私のアプリケーションがビットマップをリサイクルせずに決して閉じないことを保証します。

ヒープメモリを最小化してこのOOMを解決する方法を教えてください。

4

1 に答える 1

0

私も同じ問題に直面しました....ビットマップを効果的にロードするためにこのリンクを参照できますhttp://developer.android.com/training/displaying-bitmaps/load-bitmap.html

ヒープ サイズがガベージ コレクターの実行制限を超えると、不要なオブジェクトがクリーンアップされます。ガベージ コレクターは自動的に実行されるため、呼び出さない方がよいでしょう。

API レベル 11 以降で実行されているアプリケーションでは、マニフェストの要素に android:largeHeap="true" を設定して、通常よりも大きなヒープ サイズを要求できます。

アクティビティの onCreate メソッドでこれを使用できます(私はこれを試しませんでした) dalvik.system.VMRuntime.getRuntime().setMinimumHeapSize(yournumberhere);

于 2013-02-05T16:23:14.440 に答える