Мое приложение, использующее ARC, выполняет следующие действия:
- Загрузка изображения, сделанного камерой
- Сжатие изображения для использования в качестве эскиза.
- Я делаю это, используя [UIImage imageWithData: UIImageJPEGRepresentation (original, 0.1f)]
- Я установил нулевую ссылку на изображение для ARC, чтобы освободить память
Повторение этой последовательности будет означать, что на экране появятся несколько сжатых миниатюр. Приблизительно после 7 или 8 снимков приложение вылетает из-за нехватки памяти.
В Instruments я пытаюсь использовать Allocations в тандеме с Memory Monitor, чтобы найти источник моей проблемы.
Статистика некоторых инструментов:
Распределение - количество байтов в реальном времени увеличивается примерно на 2 МБ после съемки изображения, но затем уменьшается на 1,5 МБ после того, как исходная ссылка на изображение установлена на ноль. Кажется, это хорошо, но ...
Вот окончательное состояние приложения. # Жизнь кажется очень высокой по сравнению с живыми байтами, верно?
Live Bytes #Living #Transitory Overall #Overall Bytes
3.72 MB 24538 80679 90.1 MB 105301
Монитор памяти (отслеживающая контрольная головка) - Мое приложение запускается с 7,5 МБ, и при съемке одного снимка это увеличение увеличивается на ~ 13 МБ. Для состояния, которое я перечислил выше, Memory Monitor говорит, что приложение занимает 72,67 МБ «реальной памяти» и 123,79 МБ виртуальной памяти.
Учитывая, что Живые Байты очень малы, я знаю, что делаю что-то правильно.
Однако, учитывая, что объем памяти в других местах велик, я также уверен, что делаю что-то очень неправильное. Есть идеи, что это может быть или как отследить?