На какие индикаторы мне нужно смотреть в приложении Instruments и ObjectAlloc, чтобы узнать, нет ли утечек памяти в моем приложении? - PullRequest
2 голосов
/ 25 мая 2009

Полагаю, что наиболее интересным является столбец "# Net", хотя я не совсем понимаю, что это должно означать. Общее количество выделенных объектов? Он постоянно меняется, даже если я ничего не делаю.

Есть ли хорошие "практические правила", чтобы увидеть, если есть утечка памяти?

Ответы [ 2 ]

3 голосов
/ 25 мая 2009

Вы можете найти этот урок полезным: http://www.mobileorchard.com/find-iphone-memory-leaks-a-leaks-tool-tutorial/.

Также имеется статический анализатор, который анализирует ваш исходный код напрямую: http://clang.llvm.org/StaticAnalysisUsage.html.

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

В общем, если объем памяти вашего приложения продолжает расти после того, как вы выполнили все основные операции один или два раза, то у вас, вероятно, есть утечка памяти. Общий объем памяти находится в столбце «Net Bytes». Столбцы «Всего» включают каждое распределение во всем прогоне вашей программы, в то время как столбцы «Нетто» вычитают освобождение.

Однако инструмент "Утечки" намного лучше, чем ObjectAlloc, для обнаружения утечек памяти в моем опыте. Просто выберите «Выполнить> Начать с Performance Tool> Утечки» в XCode и запустите вашу программу на некоторое время. Если «Утечки» начинают показывать пропущенные блоки, значит, у вас есть утечка. Он сообщит вам трассировку стека каждого выделения, сохранения, освобождения и освобождения любого пропущенного блока, и вы можете дважды щелкнуть трассировку стека, чтобы перейти к этой точке в вашем коде. Просто убедитесь, что вы включили «расширенный вид детализации», нажав на маленькую полутеневую квадратную кнопку в нижней части окна, слева от метки «Leaked Blocks». Чтобы получить список распределений, щелкните маленький раскрывающий треугольник «треугольник в круге», который появляется рядом с адресом блока при наведении на него курсора мыши.

...