程序是否可用的最根本的制約因素。app
十分影響用戶體驗。函數
程序的crash有不少狀況都是內存的緣由。工具
iOS系統不支持虛擬內存,一旦出現內存不足的狀況,iOS系統會通知全部app,不管是前臺的仍是掛起的,都會收到memory warning的通知,一旦app收到memory warning的通知就應該回收佔用內存較大的對象。測試
內存警告測試方法:iOS模擬器->硬件->模擬內存警告。spa
iOS6廢除了viewDidUnload函數,因此要把以前viewDidUnload中作的事情放在didReceiveMemoryWarning中code
Analyze是一個編譯和分析工具,能夠發現編譯中的warning,內存泄露隱患,有時還能夠查處邏輯上的問題。對象
內存泄露隱患提示:內存
Potential Leak of an object allocated on line ……it
數據賦值隱患提示:io
The left operand of …… is a garbage value;
對象引用隱患提示:
Reference-Counted object is used after it is released;
Analyze發現的問題值得咱們注意,但它只是提出隱患,並不必定就存在問題。
Analyze運行方法:Product->Analyze,或者長按運行按鈕,選擇Analyze。
啓動instrument:Xcode->product->profile,選擇相應的工具,點擊profile按鈕。
顯示全部instrument工具:window->library.下面的按鈕是調整顯示方式,搜索欄是搜素某一工具。上面能夠按某一功能選擇工具。還能夠按本身的方式組織instrument工具。咱們這裏只介紹和內存相關的Allocations和leaks
Allocations:跟蹤內存分配的工具
Category:一般是一個Core Foundation對象、OC類等。
Live Bytes:當前活動內存大小。
#Living:存在的對象個數。
#Transient:已經銷燬的對象個數。
Overall Bytes:所開闢的全部內存。
#Overall:所創造出來的全部對象個數。
#Allocations(Net/Overall)當前和所有的比值。
Leaks:跟蹤內存泄露的工具