美文网首页程序员iOS Developer
Instruments的使用(一)---检测和解决iOS内存泄漏

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

作者: iOS开发到汽修 | 来源:发表于2017-03-30 14:38 被阅读347次

    最近公司写的项目中遇到了内存泄漏的问题,一直对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工具的归纳总结

    相关文章

      网友评论

        本文标题:Instruments的使用(一)---检测和解决iOS内存泄漏

        本文链接:https://www.haomeiwen.com/subject/wtguottx.html