Ответ 1
Я написал учебное пособие по использованию инструментов для отслеживания утечек памяти iPhone. Я не уверен, поможет ли вам то, с чем вы имеете дело, или нет.: -)
http://www.streamingcolour.com/blog/tutorials/tracking-iphone-memory-leaks/
Я использую функцию Leaks Instruments с помощью Xcode, чтобы (попытаться и) найти утечки памяти. Я до сих пор не понял, как использовать эту программу. Я нажимаю "Утечки" в программе и вижу, как увеличивается количество памяти в симуляторе. Появилась панель расширенной детали. Единственное, что в области расширенной детали, которая ссылается на мое приложение, является основным. Как и в основном методе, разработанном Xcode. Все остальное - UIKit, Foundations и другие классы SDK, которые я не писал. Что я делаю неправильно, что ничего не появляется из моего приложения?
До того, как я наткнулся на 3 минуты, есть более 100 утечек на 2.5k. Это распространено?
Я написал учебное пособие по использованию инструментов для отслеживания утечек памяти iPhone. Я не уверен, поможет ли вам то, с чем вы имеете дело, или нет.: -)
http://www.streamingcolour.com/blog/tutorials/tracking-iphone-memory-leaks/
Измените вид на "Расширенная деталь" на панели инструментов. Это покажет вам трассировку стека каждого просочившегося объекта после остановки записи и выбора просочившегося объекта.
Вы видите вызовы в API, но то, что вас интересует, - это поиск последнего метода вашего приложения до вызова API, то есть утечка.
Совет: включите "собирать содержимое памяти" в виде утечек. Просмотр значений объектов также помогает найти, где проблема.
Вам не нужны утечки. 100 утечек не типичны (по крайней мере, в моих приложениях;) Типичным должно быть 0.
Я не знаю, как использовать утечки, но вы всегда можете попробовать запустить анализатор Clang на своем коде, чтобы убедиться, что это что-то изменит: http://clang.llvm.org/StaticAnalysis.html. Он часто может обнаруживать множество ошибок, которые могут привести к утечкам памяти.
Xcode: run → Начать с Performance Tool → Leaks
Имейте в виду, что симулятор может протекать, когда устройство не будет. Запустили это уже с классом UITableViewController.
Использовать статический анализатор LLVM/Clang.
Обратите внимание также, что инструмент утечки не покажет вам экземпляры, где объекты перегружены и все еще удерживаются. Утечки - это случаи, когда объекты, которые должны были быть отпущены, просто болтаются, и никто не очищает их. Над сохраненными объектами справедливо удерживаются, даже если вы думаете, что их следует убрать, поэтому инструмент утечки не может указать их, поскольку они все еще упоминаются, и нет способа рассказать им отдельно от объектов, которые все еще должны быть сохранены.
Чтобы найти их, используйте инструмент создания отчетов о памяти и убедитесь, что использование памяти полностью прекратилось после освобождения объекта. Если вы заметили, что что-то не освобождает память, вы можете начать с размещения контрольных точек в dealloc, чтобы узнать, действительно ли освобождается то, что вы ожидаете увидеть выпущенным.
Вам нужно искать оба случая, чтобы сохранить чистую память.
Run -> Start with Performance Tool -> Leaks
Чтобы обнаружить утечки памяти, вы можете использовать функцию "строить и анализировать" Xcode.
Просто выберите Сборка → Сборка и анализ в меню Xcode.
Сделал сборку основных инструментов для утечки памяти: http://bcaccinolo.wordpress.com/2010/09/15/iphone-essential-performance-tools-list/
Приложение для утечек, которое можно найти в Xcode: run -> Start with Performance Tool -> Leaks
.
Инструмент утилиты яблок, который можно найти в /Developer/Applications/Performance Tools
.
Одним из лучших способов обнаружения утечек памяти является Select Product- > Analyze. В левом Xcode показывается, в каком файле происходит утечка памяти. Какая переменная вызывает утечку памяти. Это один из лучших способов найти утечки памяти.