Instruments之Leaks

Leaks工具的作用

Leaks instrument 工具检查进程堆泄露的内存。你可以使用该 instrument 工具 配合 Allocations instrument 工具来获取内存地址的历史记录。该 instrument 工具 要求你加载一个进程以便它可以从进程启动时收集数据。
如果发生了内存泄露,它可以从泄露详细信息中查看泄露的具体对象以及方法调用栈。它可以为我们提供以下信息:
内存泄露的数量(The number of leaks)
每个泄露内存块的大小(The size of each leak)
泄露内存块的地址(Address of the leaked block)
泄露对象的类型(Type of the leadked object)

Leaks工具的使用

  1. 启动xcode,选择Instruments工具
图1
图2-Instruments工具界面
图3-Leaks工具

添加Leaks工具时,会默认将Allocations(分配内存)工具也添加进来。

2.使用Leaks工具
首先,在下图区域选择需要测试的手机及手机上的app


图4

其次,点击左侧第一个按钮,开始追踪数据
数据会实时显示在下图区域

图5

如果想要暂停,点击左侧第二个按钮

如何利用Leaks工具检测解决内存泄露

数据跑完了之后,我们就需要对数据进行分析,看是否有内存泄露的情况
如下图所示,Leaks Checks区域有红色小方块,则表示此处有内存泄露

图6

点击红色小方块后,Details区域会出现详细的信息

这时,点击Details>Leaks,选择Call Tree:

图8

并勾选下图区域:


图9

这时,可以看到左侧Details区域出现了关于Leaks的详细信息,包括:内存泄露对象,泄露个数,占比,以及出现问题的代码位置:

图10

选择一条记录,双击,即可定位到有内存泄露的代码位置

图11

这样就可以针对有问题的代码进行修复啦。

注意:
如Details中定位到的不是具体的代码位置,而是地址符号,这时需要
在Build Settings -> Build Options 将Debug Information Format 的Debug值由DWAFR改成DWAFR with dSYM。

图12

推荐阅读更多精彩内容

  • 版本记录 前言 我们在做app的时候,不是做完功能就结束了,很多时候是需要进行检查和优化的,而xcode自带了一个...
    刀客传奇阅读 769评论 0 1
  • 先来一发苹果官网上Instruments User Guide,其实没啥用,英语不好的也懒得去看。(反正我是看不懂...
    和珏猫阅读 19,734评论 52 331
  • 动态检测内存工具Leaks,可以和静态分析工具Analyze配合使用。cmd + I进入 Leaks 主界面, #...
    雪_晟阅读 131评论 0 2
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 131,453评论 19 558
  • 有束光 影响一片土壤 似朝阳 洒满温暖与坚强 足够亮 适合生长 喜女哀乐此消彼长 错过有惊喜的地方 放任大半生的漂...
    霍者ILFD阅读 123评论 0 0