静态内存分析:不运行程序,直接对代码进行分析。
程序的运行:从硬盘读取到内存里面,由CPU一句句执行代码。
静态内存分析即是没有真正分配内存,根据代码的上下文的语法结构,来分析是否有内存泄漏。
- 例如:在MRC中,判断你创建某个对象后,该对象最后有没有调用release方法。
缺点:不一定准确,但是如果发现有提示,会去结合上下文看一下那里的代码是否有问题。
MRC下测试:
- 首先改成MRC模式(方便测试):点击项目选择Build Settings搜索auto,找到Objective-C Automatic Reference Counting,将YES改为NO。
- 点击Product选择Analyze,直接分析,蓝色标记符标记的地方就是有可能内存泄漏。
PS:如图,对象其实已经被释放,但还是有标记,说明静态内存分析不一定准确
ARC测试:
- ARC环境下很少有内存泄漏问题,但使用CF框架时,还是需要手动管理内存。
- 使用CF框架,如果调用了带有Create、Copy、Retain等字眼的函数,就要在最后调用相应的相干release函数。
- 点击Product选择Analyze,直接分析,蓝色标记符标记的地方就是有可能内存泄漏。