Экран коллекции грузит иконки каждый раз, память растёт до вылета
Экран коллекции при открытии асинхронно грузит около 120 иконок через систему адресуемых ассетов и раскладывает их по ячейкам. При закрытии экран просто уничтожается. Игроки на устройствах с двумя гигабайтами памяти жалуются: после десятка заходов в коллекцию игра вылетает, а профайлер памяти показывает, что бандлы с иконками накапливаются. В чём причина?
- Сборщик мусора освобождает такие ассеты сам, как только на них не осталось ссылок в C#: значит, утечка в коде экрана, который держит ссылки в статике
- Память растёт из-за асинхронной загрузки: каждая незавершённая операция держит свою копию бандла, синхронная загрузка проблему снимет
- Дело в фрагментации памяти на устройстве: помогает перезагрузка сцены между экранами, она возвращает кучу в исходное состояние
- Бандл держится, пока не обнулится счётчик обращений: каждой загрузке нужно парное освобождение при закрытии экрана
