После кождого поворота приложение начинает тормозить всё сильнее, как быть?
Доброго!
Вообщем заметил, что приложение после каждого поворота экрана становится тормознее. Где-то после 10-го уже можно замететь, после 30 очень ощутимо. Память медленно отъедает, что интересно, если вызвать GC, то собирает где-то 90%, а если ещё раз перевернуть, то памть снова съедается на очищенные 90% + ещё чутка.
Вызвал Dump Jump Heap - утечек активити не показывает, но очень много дубликатов каких-то и их количество растёт.
Полагаю косяк, что приложение не избавляется от фрагментов и продолжает их множить и собирать после каждого поворота. Можно ли как-то через FragmentManager их убивать, можно даж сразу всех? Т.е. не через replace. Т.к. у меня фрагмент во фрагменте
Neonoviiwolf: Он показывает, какие объекты имеют ссылку и соответственно удерживают фрагмент в памяти. Допустим если у тебя асинхронная задача имеет ссылку на фрагмент, ты должен на этапе уничтожения фрагмента избавиться от этой ссылки либо придумать иной подход решения проблемы чтобы не вызывать утечки памяти.
В конечном итоге добил приложение попыткой устранить утечку, откатился назад на последний коммит, вуаля ничего не течёт, память не жрёт, всё летает. Потекла видимо, после последних изменений, а раньше не думал про возможные утечки и ничего не текло, во как=) Прога похоже замечательная, но объясните, по возможности, как читать её
Neonoviiwolf: На скриншоте происходит утечка активити из-за того, что какой-то виджет, привязанный к этому активити, удерживается в памяти листенером в SpellCheckerSession. Тебе нужно удалить SpellCheckerSessionListener чтобы сборщик мусора мог уничтожить активити. Лучше объяснить это не могу.
Neonoviiwolf: Утечки это не то, что вызывается конкретными вызовами методов. Тебе таки стоит немного ознакомиться с принципом работы сборщика мусора и используемой структурой данных. Ну и понимать жизненный цикл компонентов в андроиде.