Я пытаюсь понять, почему мое приложение использует столько памяти. Я часто вижу, что он использует от 15 до 18 МБ, что значительно выше, чем я ожидал. Я посмотрел на размер кучи через DDMS и увидел это:Локализация и исправление причины большого размера кучи
Это выглядело чуть suspicous, потому что мое приложение не имеет дело с большими изображениями на всех. Фактически общая сумма чертежей в моем приложении составляет около 250 КБ. Поэтому я создал кучу кучи и использовал MAT для определения места, где все это происходило. байт [] массивы были безусловно самым крупным потребителем, поэтому я просверлил вниз и заметил следующее:
Я абсолютно не знаю, почему sPreloadedDrawables отвечает за такой высокой нераспределенной размер кучи. Я также не знаю, как определить основную причину или как ее исправить.
Куда я должен идти отсюда? Мое приложение работает в основном в фоновом режиме через службы, которые вообще не занимаются данными изображения. У меня есть действия, которые пользователь может использовать, но опять же они используют небольшие чертежи, которые не объясняют такой большой размер кучи. Я также проверял любые неприятные случаи утечек активности и т. Д., Но не нашел их.
EDIT: Я заметил, что размер кучи существенно ниже при запуске в эмуляторе. Это довольно запутанно. :/
Какую версию для Android вы используете? Я заметил, что ICS предварительно загружает графические образы, я думаю, чтобы попытаться получить более плавный пользовательский интерфейс и воспользоваться увеличенным пределом памяти VM. Так что если ваш телефон находится на ICS и ваш эмулятор на 2.X, это объясняет разницу. Я лично не тестировал эмулятор, работающий на 4.X, чтобы проверить, присутствует ли надутая память (я думаю, что-то для меня нужно сделать позже). Это определенно есть на моем телефоне, работающем 4.0.3. – sciutand
Мой телефон работает под управлением Android 4.0.3, как и эмулятор. – Glitch
Какую плотность экрана вы используете на эмуляторе или устройстве? – cistearns