Я создаю приложение, которое представляет собой своего рода галерею - оно показывает различный медиаконтент в полноэкранном режиме просмотра. Инструмент распределения показывает, что параметр Live Bytes не превышает 40 Мб при использовании приложения. Между тем приложение на 100% убивается после того, как я пролистываю страницы 20-30 раз. Я проверил параметр Dirty Memory и обнаружил, что он в 10 раз больше размера Live Bytes. И большая часть этой грязной памяти потребляла Image IO:
РЕДАКТИРОВАТЬ, еще один снимок экрана:
Вышеуказанные пики распределения предназначены для переключения мультимедийного содержимого видео / изображений. Проблема в том, что грязная память растет почти линейно, и мне нужно как-то ее освободить.
Теперь о дизайне приложения. Экран приложения имеет одну горизонтальную прокрутку. Просмотр с прокруткой содержит видео или объекты коллажа, содержащие несколько изображений. Для экономии памяти одновременно создаются только три страницы - текущая страница и страницы слева / справа. Таким образом, страницы всегда создаются и удаляются на лету при скользящей прокрутке.
Все изображения загружаю методом [UIImage imageWithContentOfFile: path]
. Объект Collage хранит экземпляры UIImage внутри imagesArray. В методе dealloc атрибут imagesArray очищается.
Итак, вопросы:
- Это какая-то системная ошибка в
[UIImage imageWithContentOfFile?]
- Это кеш Image IO?
- Могу я его очистить?