Странное растровое изображение с использованием 1 Мб кучи
Из любопытства я недавно проверил приложение Android для утечек памяти, используя анализатор памяти Eclipse.
Я столкнулся с странным растровым изображением размером 512 x 512 пикселей, используя около 1 мегабайта моей памяти кучи устройств.
![enter image description here]()
Я проверил папку drawables и не смог найти растровое изображение такого размера (512 x 512).
Я начал поиск по Google и наткнулся на этот вопрос, где пользователь объясняет, как получить фактическое изображение за ссылкой "утечка памяти" в Memory Analyzer:
MAT (Eclipse Memory Analyzer) - как просматривать растровые изображения из дампа памяти
Я последовал за учебником, и с помощью GIMP я извлек следующее изображение:
![enter image description here]()
Итак, мои вопросы:
- Что это?
- Что он делает в моей куче приложений?
- Как мне избавиться от него?
- Кто-нибудь еще имеет одно и то же растровое изображение в своей куче?
Примечания:
- В моей папке drawables нет растрового изображения, похожего на это
- Самый большой битмап, который использует мое приложение, - 140 x 140 пикселей.
- У меня такое ощущение, что этот Bitmap каким-то образом происходит из системы.
- Растровое изображение находится в куче сразу после запуска приложения - без участия пользователя
- Я отлаживаю на HTC One S, Android 4.1 Cyanogen Mod (Экран 540 x 960).
- Я не использую внешние библиотеки
Обновить:
С помощью предложения Selvin и моей личной вырубки, что это может быть системная проблема, я проверил два других моих приложения.
Оба приложения, которые я тестировал, также показали один и тот же битмап в анализаторе памяти с таким же количеством потребляемых байтов:
![enter image description here]()
Кроме того, я смог узнать, что:
Источник Bitmap всегда связан с действием LAUNCHER приложения.
Так что с этим делать?
Есть ли способ избавиться от него?
Поскольку я выполняю интенсивные операции с памятью в своем приложении, я хотел бы иметь как можно больше кучи.
Ответы
Ответ 1
Фон фона по умолчанию, используемый Android, представляет собой изображение 512x512 (синевато-темный градиент, который вы видите с темной темой или серо-белый градиент с легкой темой). На совместимых устройствах это изображение заменяется процедурным градиентом с Android 4.2.
Обратите внимание, что это растровое изображение обычно загружается в Zygote и используется всеми приложениями. Он может отображаться в дампах кучи, если дамп не исключает объекты, выделенные Zygote.
Вот два фона 512x512, о которых я говорю, если вам интересно:
https://github.com/android/platform_frameworks_base/blob/jb-mr0-release/core/res/res/drawable-nodpi/background_holo_dark.png
https://github.com/android/platform_frameworks_base/blob/jb-mr0-release/core/res/res/drawable-nodpi/background_holo_light.png