美文网首页
1分钟学会Instrument Leaks检测内存泄漏

1分钟学会Instrument Leaks检测内存泄漏

作者: pengxiaochao | 来源:发表于2023-01-10 14:34 被阅读0次

    最近几天在优化公司APP,用到了Leaks 进行内存泄漏检测,总结记录一下
    如果要检测内存泄露,可以使用Xcode自带的Instruments中的Leaks工具来检测.

    使用工具

    Xcode 14.0.1
    Instruments

    因为现在的开发环境是ARC,所以很少会出现内存泄漏的情况.但是在调用到一些底层APIC语言类型的操作的时候,可能会出现这样的问题;

    第一步:打开Xcode自带的Instruments

    1131673401710_.pic.jpg

    选择Leaks工具

    1141673401723_.pic.jpg

    按上面操作,build成功后跳出Instruments工具,选择Leaks选项

    到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!

    1.选中Xcode先把程序(command + R)运行起来

    2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了

    3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就表示监测到了内存泄露,可以进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:

    1151673401850_.pic.jpg

    4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个Call Tree的选项,点开,选中Invert Call TreeHide System Libraries; 如下图所示

    Separate by Thread -> 按线程分割
    Invert Call Tree -> 反转调用顺序
    Hide System Libraries -> 隐藏系统库
    Flatten Recursion -> 展平递归

    1191673402179_.pic.jpg

    到这里就算基本完成啦,这里显示的就是内存泄露代码调用堆栈,那么现在还差一步:定位!

    5.选中内存泄漏得那一行,双击右侧代码调用的最后一个方法;如图所示

    image.png

    会自动跳到内存泄露代码处,如图所示

    6.找到了内存泄露的地方,那么我们就可以修改即可;

    这里,我这处内存泄漏,是因为我开辟了一块内存空间,但是没用释放,所以造成了内存泄漏;

    end!

    相关文章

      网友评论

          本文标题:1分钟学会Instrument Leaks检测内存泄漏

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