Почему Android 4.0 / Ice Cream Sandwich выделяет так много кучной памяти?

Я заметил, что на моем Galaxy Nexus android.content.res.Resources выделяет около 11 МБ. Я обнаружил это в процессе профилирования с помощью DDMS и опции "Dump HPROF file". Итак, я потратил два часа, пытаясь понять, было ли выделение вызвано чем-то в моем коде или вспомогательных библиотеках. Я удалил все данные, тонну классов, все библиотеки и не увидел никаких изменений. После установки точки останова в моем коде в начале метода onCreate() активности, он показал, что выделение 11 МБ уже присутствует.

После того, как я окончательно запутался, я решил подключить свой укорененный Nook Color под управлением CM7, чтобы посмотреть, что он сообщает о начальном использовании памяти для точно такого же приложения. Наихудший случай использования памяти "Подозреваемый в проблеме", о котором сообщает MAT, весит всего 896 КБ.

Неужели ICS настолько перегружена? Я что-то упустил? Насколько я могу судить, мое приложение работает правильно, но использование кучи на 97% заставляет меня беспокоиться о возможных сбоях.

Если это поможет, MAT указывал, что основными объектами, потребляющими всю память, были Bitmaps, BitmapDrawables и NinePatchDrawables. Я не понимаю, откуда берутся эти выделения.

15
задан BradleyDotNET 16 September 2014 в 22:19
поделиться