iOS-Instruments之Leaks
2020-06-28 本文已影响0人
HCL黄
一、说明
Leaks
是用来检测内存泄露
二、如何打开


三、尽量使用真机
调试,并且使用release
配置,这样比较准确点。下面举个简单的例子
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"首页";
AModel *a1 = [[AModel alloc] init];
AModel *a2 = [[AModel alloc] init];
a1.target = a2;
a2.target = a1;
}


- 1、可以发现出现了红色的x,说明有地方内存泄露了
-
2、下面“田”字方格点开,选中Call Tree
E60E8EFA-7BAC-4015-83F1-9CE446B53662.png
-
3、勾选 Invert Call Tree 或 Hide System Libraries,过滤显示数据
E316D832-1065-43B3-BE8D-0A5A7B0784AE.png
Call Tree各个选项的介绍:
Separate by Thread: 每个线程应该分开考虑
Invert Call Tree: 从上到下跟踪堆栈
Hide System Libraries:隐藏系统库文件。过滤掉各种系统调用,只显示自己的代码调用
Flattern Recursion:拼合递归。将同一递归函数产生的多条堆栈(因为递归函数会调用自己)合并为一条
-
4、双击内存泄露的位置,就可以跳转到对应的代码了进行优化修改了
043C6DC7-F532-4402-8051-04EE33C7C5C1.png
79041881-8C07-4E82-95EC-61C0F9533D39.png