Подтвердить что ты не робот

Как вы обнаруживаете утечки памяти на iPhone?

Я использую функцию Leaks Instruments с помощью Xcode, чтобы (попытаться и) найти утечки памяти. Я до сих пор не понял, как использовать эту программу. Я нажимаю "Утечки" в программе и вижу, как увеличивается количество памяти в симуляторе. Появилась панель расширенной детали. Единственное, что в области расширенной детали, которая ссылается на мое приложение, является основным. Как и в основном методе, разработанном Xcode. Все остальное - UIKit, Foundations и другие классы SDK, которые я не писал. Что я делаю неправильно, что ничего не появляется из моего приложения?

До того, как я наткнулся на 3 минуты, есть более 100 утечек на 2.5k. Это распространено?

4b9b3361

Ответ 2

Измените вид на "Расширенная деталь" на панели инструментов. Это покажет вам трассировку стека каждого просочившегося объекта после остановки записи и выбора просочившегося объекта.

Вы видите вызовы в API, но то, что вас интересует, - это поиск последнего метода вашего приложения до вызова API, то есть утечка.

Совет: включите "собирать содержимое памяти" в виде утечек. Просмотр значений объектов также помогает найти, где проблема.

Вам не нужны утечки. 100 утечек не типичны (по крайней мере, в моих приложениях;) Типичным должно быть 0.

Ответ 3

Я не знаю, как использовать утечки, но вы всегда можете попробовать запустить анализатор Clang на своем коде, чтобы убедиться, что это что-то изменит: http://clang.llvm.org/StaticAnalysis.html. Он часто может обнаруживать множество ошибок, которые могут привести к утечкам памяти.

Ответ 4

Xcode: run → Начать с Performance Tool → Leaks

Ответ 5

Имейте в виду, что симулятор может протекать, когда устройство не будет. Запустили это уже с классом UITableViewController.

Ответ 6

Использовать статический анализатор LLVM/Clang.

Ответ 7

Обратите внимание также, что инструмент утечки не покажет вам экземпляры, где объекты перегружены и все еще удерживаются. Утечки - это случаи, когда объекты, которые должны были быть отпущены, просто болтаются, и никто не очищает их. Над сохраненными объектами справедливо удерживаются, даже если вы думаете, что их следует убрать, поэтому инструмент утечки не может указать их, поскольку они все еще упоминаются, и нет способа рассказать им отдельно от объектов, которые все еще должны быть сохранены.

Чтобы найти их, используйте инструмент создания отчетов о памяти и убедитесь, что использование памяти полностью прекратилось после освобождения объекта. Если вы заметили, что что-то не освобождает память, вы можете начать с размещения контрольных точек в dealloc, чтобы узнать, действительно ли освобождается то, что вы ожидаете увидеть выпущенным.

Вам нужно искать оба случая, чтобы сохранить чистую память.

Ответ 8

Run -> Start with Performance Tool -> Leaks

Ответ 9

Чтобы обнаружить утечки памяти, вы можете использовать функцию "строить и анализировать" Xcode.

Просто выберите Сборка → Сборка и анализ в меню Xcode.

Ответ 11

Приложение для утечек, которое можно найти в Xcode: run -> Start with Performance Tool -> Leaks.

Инструмент утилиты яблок, который можно найти в /Developer/Applications/Performance Tools.

Ответ 12

Одним из лучших способов обнаружения утечек памяти является Select Product- > Analyze. В левом Xcode показывается, в каком файле происходит утечка памяти. Какая переменная вызывает утечку памяти. Это один из лучших способов найти утечки памяти.