Instruments的使用(一)——查找废弃的内存

        内存分配概要分析模版使用Allocations和VM Tracker工具来测量应用程序中常规和虚拟内存使用情况。但是,要追踪已分配但不再需要的废弃内存,要重点关注Allocations 工具.该工具测量堆内存使用情况并跟踪内存分配,包括按类分配的特定对象。

1.启动Instruments.

2.在出现的分析模版选择对话框中,点击“Allocations”.

3.点击"choose"来创建一个跟踪文档.

Instruments的使用(一)——查找废弃的内存_第1张图片
(1)摘要面板

4.从目标设备和进程列表中选择你的设备和应用程序.

5.在时间线面板上点击“Allocations”.

   生成标记(make generations)按钮在细节窗口底部的筛选器和配置栏中。

Instruments的使用(一)——查找废弃的内存_第2张图片
(2)细节窗格

6.点击工具栏中的记录按钮(或者快捷键“command + R”)开始记录.

(3) record按钮

7.在你的app上执行一系列可重复的操作.(为了准备的生成趋势,这应该是app在相同状态下启动和完成的操作。)

8.点击在筛选器和配置栏中的生成标记按钮. (轨道窗格中将显示一个标志来标记。你做的标志列表展示在详情面上。每一个标识包含从上一个标识之后分配的内存列表。在记录完成之后,你还可以通过拖动跟踪面板上时间线的检查头到所需位置并点击,从而生成标志。)

9.在监视详情面板的同时多次执行步骤8和9,直到你清楚内存是否在无限制增长.

重点: 在开始的几次操作中,额外的内存增长可能是由于缓存。因此,创建一个初始标志来建立基准线是很重要的。然后,创建额外的标志来做真正的分析。

10.当你准备结束录制,点击工具栏上的stop按钮(或快捷键“command + R”).

Instruments的使用(一)——查找废弃的内存_第3张图片
(4)stop按钮

11.浏览详情面板中的这些标志,找出重复内存增长的那一个。

    Growth 和 # Persistent 这两列分别告诉你从上一个标志到当前标志的这个过程中有多少内存增长和内存分配。如果你的app回到了一个操作的初始状态,你不应该期望增长的内存从一个标志积累到下一个标志。

Instruments的使用(一)——查找废弃的内存_第4张图片
(5) 完整操作回路的例子(push和pop循环操作)

12.点开标志旁的小三角,会看到这个阶段被分配内存的新对象.

13.寻找持久化对象。如果你确定了一个,点击小三角以显示其实例。

14.选择一个实例。

Instruments的使用(一)——查找废弃的内存_第5张图片

15.点击详情面板中的条目并按住control键,在弹出窗口中选择Xcode中的Reveal以在Xcode中显示源.

Instruments的使用(一)——查找废弃的内存_第6张图片

注:你的app调用的是黑色的,并且有如下icon:

16.判断哪些分配的内存是有用的,如果没用,那就是废弃的内存需要被解决。

    由于你的app仍然引用了废弃内存,instruments无法确定其重要性。要查找废弃内存,用标志来确保重复执行同一组操作时内存不会继续增长。例如,打开和结束新游戏,打开和关闭一个窗口,创建和删除一个联系人,设置和取消设置首选项都是应该将你的app恢复到先前稳定的内存状态的操作。多次循环此类操作不应该引起意外或无限制的内存增长. Instruments可以帮你将增长时段与特定的分配对象关联起来,因此你可以释放它们来减少app的内存占用。

你可能感兴趣的:(Instruments的使用(一)——查找废弃的内存)