Instruments 检测内存泄漏
2017-07-19 本文已影响211人
强子ly
目的:检测项目内存泄漏、定位内存泄露代码。
工具:Instruments-->Leaks
⚠️分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的。
一、两种开启内存检测的方式
1.1)、Product -> Profile-->Instruments

1.2)、Xcode-->OpenDeveloper-->Instruments

1.3)、开启截图

二、开始检测

2.1)、选择检测的项目
2.2)、选择设备
2.3)、开始检测(在此之前需要将程序运行起来)
三、配置及运行

3.1)、点击出现的叉号(内存泄漏)。
3.2)、Details-->选择Call Tree。
3.3)、点击Call Tree。(此处指的是Xcode8以上, Xcode7在右下角)
3.4)、选择Invert CallTree && Hide System Libraries 。
3.5)、双击5,即可进入内存泄漏相关代码。
四、相关知识(复制)
4.1)、内存溢出 out of memory
指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
4.2)、内存泄露 memory leak
指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。