График памяти/диаграмма памяти в XCode 5 во время отладки
Что использует диаграмма/график использования памяти "Память" точно в окне XQode 5 Debug navigator?
У меня есть проект приложения iOS с отключенным ARC и no-storyboard/xib (т.е. старый стиль). Все управление памятью выполняется вручную с использованием функции сохранения/освобождения/автозагрузки.
Когда я отлаживаю проект в XCode 5, график-график/график памяти показывает постепенное увеличение использования памяти по мере запуска приложения, превышает 1 ГБ памяти в течение получаса.
Грубо, он продолжает увеличиваться на 0,1-0,3 МБ за 2 - 3 секунды с очень редкими падениями/уменьшением памяти (по величине < 0,1 МБ за 30 секунд).
![enter image description here]()
Это проблема (утечка памяти) в отношении управления памятью? Я провел анализ памяти (используя "Распределение/утечка памяти через инструменты на XCode 4.6" ), но не обнаружил утечек.
Ответы
Ответ 1
Нашел ответ сам. К сожалению, у меня был NSZombieEnabled (объект Zombie) для режима отладки - см. Ниже - (меню Продукт > Схема > Редактировать схему)
![enter image description here]()
Обычно инструмент NSZombieEnabled сохраняет даже выпущенные объекты в памяти, чтобы помочь разработчику найти более выпущенные объекты. Ссылка на эту ссылку - Что такое NSZombie?
После того как я отключил опцию "Включить объекты зомби", использование памяти стабилизировалось примерно до 10 мб (не всегда увеличивалось) даже после использования приложения за полчаса - см. ниже -
![enter image description here]()
BOTTOM LINE. Убедитесь, что вы очищаете "Включить объекты зомби", когда хотите анализировать использование памяти.
Ответ 2
Он просто измеряет память, используемую вашим приложением. Поэтому, если он увеличивается, он должен быть утечкой памяти.
При использовании инструментов анализа утечки я буду использовать его в качестве ориентира. Это может помочь вам найти утечки, но со всеми автоматическими инструментами он может не найти все. Поскольку некоторые фрагменты кода (особенно более динамичные) могут быть трудно предсказать, что они делают память разумным для автоматизированного инструмента.
Ответ 3
Я вижу проблему, когда память (куча) неограниченно растет при тяжелой обработке, но при запуске одного и того же двоичного кода без Xcode; использование памяти в порядке. Не забудьте проверить вне Xcode - не знаю, в чем причина. NSZombies и все другие опции отладки отключены.