Странное изображение с использованием 1 Мб кучи
Из любопытства я недавно протестировал свое Android-приложение на предмет утечек памяти, используя Eclipse Memory Analyzer.
Я натолкнулся на странное растровое изображение размером 512 x 512 пикселей, которое заняло около 1 мегабайта памяти моего устройства.
Я проверил свою папку drawables и не смог найти растровое изображение такого размера (512 x 512).
Я начал гуглить и наткнулся на этот вопрос, где пользователь объясняет, как получить фактическое изображение за ссылкой "утечка памяти" в анализаторе памяти:
MAT (Eclipse Memory Analyzer) - как просматривать растровые изображения из дампа памяти
Я следовал за учебником и с помощью GIMP я извлек следующее изображение:
Итак, мои вопросы:
- Что это такое?
- Что это делает в моей куче приложений?
- Как мне от этого избавиться?
- Кто-нибудь еще имеет такой же растровое изображение в своей куче?
Заметки:
- В моей папке drawables нет растрового изображения, похожего на это
- Самое большое растровое изображение, которое использует мое приложение, - 140 x 140 пикселей.
- У меня такое ощущение, что этот растр как-то исходит из системы
- Растровое изображение находится в куче сразу после запуска приложения - без какого-либо взаимодействия с пользователем
- Я отлаживаю на HTC One S, Android 4.1 Cyanogen Mod (Экран 540 x 960)
- Я не использую внешние библиотеки
Обновление:
С помощью предложения Selvin и моего личного чувства, что это может быть проблемой системы, я протестировал два других моих приложения.
Оба приложения, которые я тестировал, также показали одно и то же растровое изображение в анализаторе памяти с точно таким же количеством потребляемых байтов:
Кроме того, мне удалось выяснить, что:
Источник растрового изображения всегда связан с активностью LAUNCHER приложения.
Так что с этим делать? Есть ли способ избавиться от этого?
Поскольку в моем приложении выполняются операции с интенсивным использованием памяти, я бы хотел иметь как можно больше доступной кучи.
1 ответ
Фон окна по умолчанию, используемый Android, представляет собой изображение 512x512 (сине-темный градиент, который вы видите с темной темой, или серо-белый градиент с темной темой). На способных устройствах это изображение заменено процедурным градиентом начиная с Android 4.2.
Обратите внимание, что это растровое изображение обычно загружается в Zygote и используется всеми приложениями. Он может отображаться в дампах кучи, если дамп не исключает объекты, выделенные Zygote.
Вот два фона 512x512, о которых я говорю, если вам интересно: