Я создаю приложение, которое является своего рода галереей - оно показывает различный медиа-контент в качестве полноэкранного средства просмотра. Инструмент Распределения показывает, что параметр 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 кеш?
- Могу ли я это очистить?