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




6 Answers

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

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

раздел освобождается

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

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




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




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




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

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

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




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

Просто выберите Build -> Build and Analyze в меню Xcode.




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

/Developer/Applications/Performance Tools Apple, которые можно найти в /Developer/Applications/Performance Tools .




Related

iphone xcode memory-leaks