web-dev-qa-db-ja.com

Androidエミュレーターでメモリ不足エラーが発生しましたが、デバイスでは発生しません

Androidエミュレーターで、アプリを終了してすぐに再実行すると、次のようになります。

OutOfMemoryError: bitmap size exceeds VM budget.

しかし、デバイス自体では、これは起こりません。どうして?

19
piojo

エミュレーターでは、デフォルトの最大ヒープサイズは約13MBです。

デバイスでは、電話とAndroidバージョンによって異なります。MotorolaDroidでは、最大ヒープサイズは約21〜22 MBで、HTCDesireでは約32MBです。

そのため、デバイスではなくエミュレータでクラッシュが発生します。

アプリケーションのヒープサイズを監視する場合は、同様のメソッドを呼び出すことができます。

protected void displayMemoryUsage(String message) {
    int usedKBytes = (int) (Debug.getNativeHeapAllocatedSize() / 1024L);
    String usedMegsString = String.format("%s - usedMemory = Memory Used: %d KB", message, usedKBytes);
    Log.d(TAG, usedMegsString);
}
15
ol_v_er

AVD RAMおよび最大VMアプリケーションヒープサイズをVMオプションで増やします。

これを行うには、

ウィンドウ-> AVDマネージャー->仮想デバイス->編集。

13
Avram Score

ヒープサイズを増やすエミュレーターの場合-それは私のために機能しました16Mから32Mに増やしました

5
Atul Darne

これは、Andriod studio1.2.0からエミュレーターのヒープサイズを操作するオプションを見つける方法についての怠惰です

  1. メニューツール-> Android-> AVD Manager
  2. 選択した仮想デバイスを編集します
  3. 詳細設定をクリックして下にスクロールします

Change VM heap in Android studio

3
Aksel Willgert

おそらく、デバイスのメモリがエミュレータよりも多いためです。 This SO question は、エミュレーターのサイズを増やす方法を示しています。

さらに、 Java VMヒープサイズ を増やす)。

1
anon

割り当てられるメモリのサイズを増やします...