iOS基础 - 内存分析

一、内存的重要性

程序是否可用的最根本的制约因素。

十分影响用户体验。

程序的crash有很多情况都是内存的原因。

二、iOS平台内存警告机制

iOS系统不支持虚拟内存,一旦出现内存不足的情况,iOS系统会通知所有app,无论是前台的还是挂起的,都会收到memory warning的通知,一旦app收到memory warning的通知就应该回收占用内存较大的对象。

内存警告测试方法:iOS模拟器->硬件->模拟内存警告。

iOS6废除了viewDidUnload函数,所以要把之前viewDidUnload中做的事情放在didReceiveMemoryWarning

三、静态分析工具——Analyze

Analyze是一个编译和分析工具,可以发现编译中的warning,内存泄露隐患,有时还可以查处逻辑上的问题。

内存泄露隐患提示:

Potential Leak of an object allocated on line ……

数据赋值隐患提示:

The left operand of …… is a garbage value;

对象引用隐患提示:

Reference-Counted object is used after it is released;

Analyze发现的问题值得我们注意,但它只是提出隐患,并不一定就存在问题。

Analyze运行方法:Product->Analyze,或者长按运行按钮,选择Analyze

四、动态分析工具——Instrument

启动instrumentXcode->product->profile,选择相应的工具,点击profile按钮。

显示所有instrument工具:window->library.下面的按钮是调整显示方式,搜索栏是搜素某一工具。上面可以按某一功能选择工具。还可以按自己的方式组织instrument工具。我们这里只介绍和内存相关的Allocationsleaks

Allocations:跟踪内存分配的工具

Category:通常是一个Core Foundation对象、OC类等。

Live Bytes:当前活动内存大小。

#Living:存在的对象个数。

#Transient:已经销毁的对象个数。

Overall Bytes:所开辟的所有内存。

#Overall:所创造出来的所有对象个数。

#AllocationsNet/Overall)当前和全部的比值。

Leaks:跟踪内存泄露的工具

你可能感兴趣的:(ios)