Как вы обнаруживаете утечки памяти на iPhone? - PullRequest
24 голосов
/ 30 января 2009

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

Прежде чем я пробью 3 минуты, есть более 100 утечек на общую сумму 2,5 тыс. Это часто встречается?

Ответы [ 12 ]

29 голосов
/ 02 февраля 2009

Я написал учебник по использованию инструментов для отслеживания утечек памяти на iPhone. Я не уверен, поможет ли это вам с тем, с чем вы имеете дело, или нет ... не может повредить. : -)

http://www.streamingcolour.com/blog/tutorials/tracking-iphone-memory-leaks/

5 голосов
/ 30 января 2009

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

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

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

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

3 голосов
/ 22 февраля 2010

Xcode: запустить -> Начать с Performance Tool -> Leaks

3 голосов
/ 30 января 2009

Я не знаком с тем, как использовать утечки, но вы всегда можете попробовать запустить анализатор Clang в своем коде, чтобы посмотреть, не вызовет ли это что-нибудь: привести к утечке памяти.

2 голосов
/ 15 мая 2009

Используйте LLVM / Clang Static Analyzer.

2 голосов
/ 02 февраля 2009

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

1 голос
/ 15 июля 2011
Run -> Start with Performance Tool -> Leaks
1 голос
/ 30 января 2009

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

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

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

0 голосов
/ 16 ноября 2013

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

0 голосов
/ 15 июля 2011

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

Утилита Apple Instruments, которую можно найти в /Developer/Applications/Performance Tools.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...