iOS 内存泄漏检测 Instruments Leaks

Posted 长沙火山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,重复以上步骤即可定位到具体代码。

以上是关于iOS 内存泄漏检测 Instruments Leaks的主要内容,如果未能解决你的问题,请参考以下文章

iOS 内存泄漏检测 Instruments Leaks

iOS 内存泄漏检测 Instruments Leaks

MKMapView 在 iOS10 中检测内存泄漏

iOS性能优化:Instruments

IOS性能调优系列:使用Instruments动态分析内存泄漏

IOS性能调优系列:使用Instruments动态分析内存泄漏