程序员iOS Developer

Instruments的使用(一)---检测和解决iOS内存泄漏

2017-03-30  本文已影响347人  iOS开发到汽修

最近公司写的项目中遇到了内存泄漏的问题,一直对instruments的使用很不熟练,借此机会记录一下使用经验。

ARC之前,instruments是神器,ARC之后,它依然是神器。

内存泄漏是个很严重的问题,下面是使用xcode中instruments工具的过程:

  1. 打开instruments


    122EE96D-926B-4894-AD39-8A60F4383069.png

    或者


    7E2606CD-8A95-4DB1-8377-4372ED5121B7.png
    按上面操作,build成功后跳出Instruments工具,选择Leaks选项。
    9022801D-D55D-4164-B31D-BA6D6088DF54.png

    打开此工具后,就可以开始测试了。

  2. 打开instruments后点击左上角开始按钮


    007D299D-BC1C-4D15-9CCB-A2909D8CE3A1.png

    再在模拟器中或者真机中来操作APP以便发现问题,如果发现如图红色的叉号时,表示检测到了内存泄漏,此时可以点击左上角暂停按钮或者发现多个红叉之后再点击暂停,视情况而定。

  3. 下面就可以定位代码了,具体步骤为:


    819024-20151009093833143-1343849154.png

    选中leak checks,然后选择call tree,选中后再在下图所示中进行配置:


    819024-20151009094249174-5472541.png
    然后再选择自己认为可能的代码泄露的地方,点进去看下代码:
2156697-a550230a80006055.png

当然,这种方法可以找到大部分的内存泄漏问题,然而有一些内存泄漏还是看不出来的。

还有一个部分Circles & Roots,这里可以看到引用计数的详细信息,看这里也有利于找到一些问题:


A1D96852-ED10-466C-B43A-B5E1933D5B9A.png

写到这里,就差不多记录了一下instruments中的Leaks的简单使用,不过可惜的是,这个工具并没有为我找到内存泄漏的代码在何处,经过检查是因为某两个类的代理相互引用造成的。

更高深的东西我也不知道了,就不在这里搬运了,想看的在这里:iOS-Main -关于Instruments-Leaks工具的归纳总结

上一篇下一篇

猜你喜欢

热点阅读