一、前提条件:
在真机上装有**应用。
1、 因为虚拟机内存足够,所以测试中使用真机;
2、因为IOS开发者账号只申请一个,给开发组使用了,我们没法通过Xcode自动安装程序到手机上,所以用itools进行安装,然后再连接到Xcode上。
3、如果通过itools安装的真机,在测试时候只能定位到后台,定位不到代码,所以我们先用虚拟机(通过Xcode安装)练习一下方法,一般问题严重的地方也是可以准确定位的。
二、操作步骤:
1.真机连接xcode,并启动instruments(通过Product—profile一键启动,也可以通过Xcode—OpenDeveloper Tool+run启动);
2.选择memory,打开leaks;
3.点击Record, 应用程序会自动启动;
4. 在左侧将下图的AutomaticSnapshotting去掉勾选,或是将snapshotInterval的时间设置较长,以保证抓取的时间 (由于默认的快照时间是10s)。
因为自动抓取的时候,程序会停止3秒钟左右,影响手动操作;
5. 待真机上操作完成后,点击Snapshot Now快照一次,并点击暂停按钮;
6. 在leaks列表下就会产生许多leak地方;
三、分析leak
由于产生的leak较多,故前期只需要分析产生leak较多的地方。
1)点击size,可以按照大小自动排列leak;
2)比如任意查看内存问题出现较多的地方;
3)展开,并点击其中任意一个地址,在事件类型一列,看到最后内存被release了,可能在这一块释放内存时出现了问题
扩展知识:代码中所有的alloc,copy,multicopy,retain,release,autorelease,有占用就要有释放,必须一一对应的。
4)点击view视图,在右侧弹出更多的详情:
5)查看更多详情中的堆栈信息,出问题的就是黑色代码的最上面一行
6)双击出问题的堆栈信息就可以看到对应的问题代码:
其中百分比就是表现此处代码内存泄露的可能性。