美文网首页
2018-07-19

2018-07-19

作者: 爱恨的潮汐 | 来源:发表于2018-07-19 13:43 被阅读21次

    简介:
    虽然苹果出了ARC(自动内存管理机制),我们不用花太多的时间在内存泄漏的问题上,但在我们开发的过程中,还是会因为各种原因而产生内存泄漏,例如Block的循环引用,delegate 写成了 strong,定时器没有关闭,弱指针使用不当等等。
    所以我们下面就简单介绍下怎么使用Xcode8自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码,让我们可以更准确的定位和解决问题
    (分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)

    第一步:打开Xcode8自带的Instruments


    1605697-0ea17d506a574232.png

    或者:


    1605697-7cbdb9a0ac6255f6.png
    按上面操作,build成功后跳出Instruments工具,选择Leaks选项
    1605697-579403a64d9e413c.png
    打开Leaks工具之后,点击红色圆点按钮启动Leaks工具,在Leaks工具启动同时,模拟器或真机也跟着启动: image.png
    到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!
    1.选中Xcode先把程序(command + R)运行起来
    2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了
    3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示: 1605697-a3a19b41fbaa73fb.png
    4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个”田”字方格,点开,选中Call Tree
    显示如下图界面 1605697-b99a74b99badc061.png 5.下面就是最关键的一步,在这个界面的下面有若干选框,选中CallTree后勾选 Inver Call Tree和Hide System Libraries,(红圈范围内)显示如下: 1605697-78bbc7c61a34ac40.png

    到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!
    6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示


    1605697-39094b11ce18a322.png
    7.找到了内存泄露的地方,那么我们就可以修改即可
    总结:内存泄漏是我们常遇到的问题,解决内存泄漏是优化和减少突然的Bug前提。

    相关文章

      网友评论

          本文标题:2018-07-19

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