Разделение памяти Android
Я получаю ошибку "размер растрового изображения превышает VM". Я прочитал, что существует ограничение на 16 МБ памяти. В этом потоке Ромен Гай говорит, что" вы можете выделить только 16 МБ
памяти для всего вашего приложения ".
Однако у моего приложения должно быть нехватка памяти задолго до того, как он достигнет этого предела. Поэтому я задаю вопрос: как распределить память для моего приложения... как увеличить выделение для моего приложения (в пределах максимального 16 МБ)?
Ответы
Ответ 1
Как и в случае любой виртуальной машины Java, память кучи будет автоматически расти до максимального размера. Но растровые изображения выделяются вне виртуальной машины, поэтому вы не видите их легко в статистике. Лучшее, что вы можете сделать, это убедиться, что вы не используете большие растровые изображения или уменьшаете масштаб изображения, используя
http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
Из Eclipse вы можете сгенерировать кучу кучи, когда находитесь на Android 1.6 или выше, и вы можете проанализировать дамп с Eclipse MAT.
Как правило, вы не можете контролировать максимальный размер кучи на реальном устройстве, если только вы не работаете с настраиваемым оборудованием или прошивкой.
На сайте developer.android.com должна быть статья о сбросе кучи на 1.6, но я не могу ее найти.: (
Edit
Кроме того, я должен упомянуть, что вы можете запросить больше памяти для приложений, используя
Android: largeHeap = "истина"
в манифесте. Но это очень плохо, поскольку большинство приложений не нуждаются в этом.
Ответ 2
Обратите внимание, что ограничение кучи зависит от устройства. На Droid или Nexus One это ограничение составляет 24 МБ (для размещения больших графических ресурсов.)
Ответ 3
Если вы используете потоки, отладчик может быть источником проблемы. Если вы запустите приложение под отладчиком, то все созданные потоки будут сохранены отладчиком, даже когда они будут завершены. Это приводит к ошибкам памяти, которые не будут выполняться, когда приложение работает без отладчика.
http://code.google.com/p/android/issues/detail?id=7979
https://android.googlesource.com/platform/dalvik/+/master/docs/debugger.html
Ответ 4
Недавно я нашел ответ на ваш вопрос.
Перейдите в Android SDK Directory и
запустить sdk manager (Tools- > android запустить этот файл)
В менеджере SDK перейдите в Инструменты → Управление AVD
Теперь открывается диалоговое окно Android Virtual Device Manager.
в этом окне выберите AVD и нажмите Edit
Теперь в разделе SD-карты выберите SIZE и установите 1024 MiB в разделе "Оборудование" нажмите "Создать" и выберите "Максимальный размер кучи VM VM". Теперь установите 100 (в зависимости от вашего приложения)
Наконец нажмите "Редактировать AVD"
После редактирования нажмите кнопку обновления на sdk Manager
Теперь запустите приложение в AVD, ваша проблема решена.