你如何捕获iOS项目中的内存泄漏?

时间:2012-01-04 13:42:46

标签: ios memory-leaks

内存泄漏是iOS项目中经常出现的问题。 Xcode泄漏仪器和静态分析仪找不到所有这些。你怎么找到漏洞?

1 个答案:

答案 0 :(得分:0)

我开发了lib,可以捕获泄漏的物体,并可视化彼此之间的关系。

所有交互都通过Xcode控制台进行。按Xcode调试器中的暂停并输入类似的内容:

po [parser run:@"leaks saveGraph /Users/yourName/Documents/dot/mem.txt"]

该命令为点工具生成mem.txt文件(http://www.graphviz.org/)。必须安装一个点。然后我们可以通过;

将mem.txt转换为dot文件
dot -Tdot mem.txt -o mem.dot && open ./mem.dot 

这将显示当前时刻应用中的实时和死亡对象的图形。一些例子:

https://github.com/soniccat/memCheck-for-iOS/raw/master/images/pic1.png
https://github.com/soniccat/memCheck-for-iOS/raw/master/images/pic2.png

DetailViewController到UILabel的箭头表示DetailViewController的对象包含UILabel的对象。虚线箭头表示物体何时死亡。活物体具有白色背景,死物体具有灰色背景。

关于解析器命令格式和特殊过滤器(fromList),它删除了您在memCheck-for-iOS git hub page上可以阅读的所有不必要的对象。

快乐使用:)