Ошибка нехватки памяти на эмуляторе Android, но не на устройстве - PullRequest
19 голосов
/ 15 сентября 2011

В эмуляторе Android, когда я выхожу из приложения и немедленно запускаю его, я получаю

OutOfMemoryError: bitmap size exceeds VM budget.

Но на самом устройстве этого не происходит.Почему?

Ответы [ 6 ]

15 голосов
/ 15 сентября 2011

В эмуляторе максимальный размер кучи по умолчанию составляет около 13 МБ.

На устройстве это зависит от телефона и версии Android. На моем Motorola Droid максимальный размер кучи составляет около 21-22 МБ, а на моем HTC Desire - около 32 МБ.

Вот почему у вас происходит сбой на эмуляторе, а не на вашем устройстве.

Если вы хотите отслеживать размер кучи вашего приложения, вы можете вызвать аналогичный метод:

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);
}
13 голосов
/ 15 сентября 2011

Увеличьте объем ОЗУ AVD и максимальный размер кучи приложения VM в параметрах виртуальной машины.

Для этого перейдите в

Окно -> Диспетчер AVD -> Виртуальные устройства ->Изменить.

5 голосов
/ 21 февраля 2013

Вам нужно увеличить размер кучи для эмулятора - у меня это сработало я увеличил его с 16 М до 32 М

3 голосов
/ 06 мая 2015

Вот ленивый, как найти варианты управления размером кучи для эмулятора от Andriod studio 1.2.0

  1. Меню инструментов-> Android-> AVD Manager
  2. редактировать выбранное виртуальное устройство
  3. нажмите дополнительные настройки и прокрутите вниз

Change VM heap in android studio

1 голос
/ 15 сентября 2011

Вероятно, это потому, что ваше устройство имеет больше памяти, чем ваш эмулятор. Этот вопрос SO показывает, как увеличить размер вашего эмулятора.

Кроме того, вы можете увеличить размер кучи Java VM .

0 голосов
/ 16 сентября 2013

Увеличить размер выделенной памяти ...

...