В настоящее время я разрабатываю приложение для Android, и я использую свое собственное устройство (nexus 4) для его отладки. Кажется, у меня проблемы с размером кучи, выделенными Dalvik VM, и я надеюсь, что вы можете мне помочь в этом.На dalvik initial heapsize
Мое приложение обрабатывает относительно важный объем данных (~ 3 МБ) из файла и использует его для генерации объектов Java, которые охватывают всего 10 МБ. Это не должно быть проблемой для устройства с 2 ГБ ОЗУ и ограничения размера кучи 512 МБ (если я не ошибаюсь).
Однако инструмент отладки говорит мне, что размер кучи, выделенный моему приложению, составляет примерно 10 МБ, что приводит к возмутительному объему сбора мусора (каждый GC frees ~ 500KB). Я просмотрел уже много страниц на SO и других форумах о модели размера кучи Dalvik и т. Д., И я нашел атрибут (API level 13+) для использования в этом случае, однако он ничего не улучшил, и я все еще застрял с 10 МБ для использования, когда устройство имеет начальную память 2 ГБ. Я понимаю, что ОС и т. Д. И т. Д. Берут некоторую память, что Dalvik также ограничивает приложения, но почему я не могу достичь хотя бы 512 МБ?
Итак, я что-то не понял? Я что-то пропустил? Проблема кажется довольно простой, но я не понимаю.
Ваша помощь будет принята с благодарностью!
PS: Пожалуйста, не предлагайте переключиться на NDK, это не подходит в моем случае.
Здравствуйте, прежде всего, спасибо за ваш ответ. Идея обмануть виртуальную машину хороша. Не чистое решение, а план резервного копирования. Мой вопрос был более портирован на числах на самом деле. Мое приложение использует больше данных, чем среднее приложение, и все же ему выделяется только 10 МБ, что кажется очень низким по сравнению с тем, что получают другие приложения (64 МБ +). –
У вашего приложения будет доступ к тому же количеству, которое получат другие приложения. VM просто пытается очень не использовать его. В идеале VM увидит, что это GCing часто и расширяет кучу, а не настаивает на том, чтобы держать кучу маленькой, но в настоящее время она этого не делает. – fadden
«fiat lux» :) Большое спасибо за объяснение, все сразу стало ясно! –