Память и действия :: OutOfMemory

НАСТРОЙКА:

У меня есть это приложение, которое имеет 4 действия по линейному пути, очень простая навигация: A -> B -> C -> D

Все действия имеют одно и то же фоновое изображение, и все они имеют пару обычных кнопок, текстовое представление или текст редактирования. Все они определены в XML-файлах отдельных представлений.

Фон градиентный и довольно тяжелый. Около 3 мегабайт в несжатом растровом изображении.

Приложение пока ничего не делает, единственная логика в нем - запуск действий и их закрытие при нажатии кнопки

Я попытался использовать MAT, чтобы найти утечку памяти, но ничего не нашел. Самый большой сохраненный размер в моем приложении - 656 (ko?), Общий сохраненный размер для приложения - 1520 (ko?), И я не могу найти ни одного объекта, который мог бы быть продублирован. Что, кстати, полностью противоречит dumpsys, который показывает выделенное 27300 (ko?)

ПРОБЛЕМЫ:

  1. Когда я перемещаюсь вверх, я вижу увеличение использования памяти, эквивалентное размеру фона.
  2. Когда я перехожу ВНИЗ, закрывая действия с помощью кнопки «Назад» или команды «Завершить», использование памяти приложением не уменьшается.
  3. Если я перейду от A к D, затем обратно к B и поверну экран, приложение принудительно закроется с исключением OutOfMemory.

ВОПРОСЫ:

Обновление: я предполагаю, что реальный вопрос заключается в том, почему у меня огромная утечка памяти (5 мегабайт за раз) с размером приложения 27 мегабайт во время зависания, и я не вижу ее в MAT?

  1. Зачем Android несколько раз распаковывать один и тот же фон, по одному разу за действие? Кажется неэффективным.
  2. Можно ли решить эту проблему с помощью тем, или я увижу ту же странность «выделить 1 фон по активности»?
  3. Почему действия не восстанавливаются при закрытии?
  4. Почему MAT и dumpsys представляют разные числа?

ПОДСКАЗКИ

Точно в то же время у меня есть: dumpsys meminfo:

Applications Memory Usage (kB):
Uptime: 74006853 Realtime: 110962243

** MEMINFO in pid 22683 [com.kayenko.sosadresse] **
                    native   dalvik    other    total
            size:    20820     5767      N/A    26587
       allocated:    18751     2901      N/A    21652
            free:      312     2866      N/A     3178
           (Pss):     1357      201    16782    18340
  (shared dirty):     2264     1804     5456     9524
    (priv dirty):     1280      116    16032    17428

 Objects
           Views:        0        ViewRoots:        0
     AppContexts:        0       Activities:        0
          Assets:        2    AssetManagers:        2
   Local Binders:       18    Proxy Binders:       16
Death Recipients:        1
 OpenSSL Sockets:        0

 SQL
               heap:        0         MEMORY_USED:        0
 PAGECACHE_OVERFLOW:        0         MALLOC_SIZE:        0

И это дерево доминаторов:

MAT Dominator tree

Спасибо всем, кто знает, что я должен искать.

5
задан Yahel 30 April 2012 в 10:05
поделиться