iOS 内存泄漏检测 Instruments Leaks

  1. Xcode 中 按住 command + I 或者菜单栏 Product – Profile

在这里插入图片描述
2. 双击 Leaks 或者按 choose,打开 Leaks 面板
在这里插入图片描述
3. 在显示的 Leaks 面板中,点击左上角红色点,即可运行内存检测。
4. 在运行过程中如果发现Leak Checks(如图)出现红色X说明检测到内存泄露,将鼠标点击Leak Checks,在下方即可看到内存泄漏的相关信息。
在这里插入图片描述
5. 定位内存泄漏代码位置

  1. 选择 Leaks 有时候默认是 Run lssues,这时需要将其切换为 Leaks
  2. 选择 call Three

在这里插入图片描述
3. 此时,仍然看不到具体的代码位置,需要选择底部的 Call Tree,在弹窗中选择 Invert Call Tree 和 Hide System Libraries,即可显示出具体内存泄漏的代码。在这里插入图片描述
Call Tree 四种选项具体含义:

Separate by Thread:按线程分开做分析,这样更容易揪出那些吃资源的问题线程。特别是对于主线程,它要处理和渲染所有的接口数据,一旦受到阻塞,程序必然卡顿或停止响应。

Invert Call Tree:反向输出调用树。把调用层级最深的方法显示在最上面,更容易找到最耗时的操作。

Hide System Libraries:隐藏系统库文件。过滤掉各种系统调用,只显示自己的代码调用。

Flattern Recursion:拼合递归。将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条。

  1. 双击选中行,即可跳转 Instrument 中具体的代码在这里插入图片描述
  2. 点击右侧 Xcode 图标跳转至 Xcode 中定位的内存未回收的代码在这里插入图片描述
    注意:如果第五步不出现定位箭头,无法定位到具体代码,则点击项目工程文件-Buidl Setting-All-搜索Debug Information Format-Debug里选择DWARF with dSYM File(如图)
    在这里插入图片描述
    默认情况下,只有 release 环境下为 DWARF with dSYM File,其他环境均为 DWARF。当 Debug Information Format 为 DWARF with dSYM File 的时候,构建过程中多了一步 Generate dSYM File,最终产出的文件也多了一个 dSYM 文件。然后,重新编译启动 Instruments Leaks,重复以上步骤即可定位到具体代码。

猜你喜欢

转载自blog.csdn.net/u010545480/article/details/128734393