iOS記憶體管理


簡介

iOS下記憶體管理的基本思想就是引用計數,通過物件的引用計數來對記憶體物件的生命週期進行控制。具體到程式設計時間方面,主要有兩種方式:

1:MRR(manual retain-release),人工引用計數,物件的生成、銷燬、引用計數的變化都是由開發人員來完成。

2:ARC(Automatic Reference Counting),自動引用計數,只負責物件的生成,其他過程開發人員不再需要關心其銷燬,使用方式類似於垃圾回收,但其實質還是引用計數。

面臨的問題

根據蘋果說明文件,面臨的兩個主要問題是:

釋放或覆蓋的資料仍然在使用。這將造成記憶體損壞,通常在應用程式崩潰,或者更糟,損壞使用者資料。

不釋放不再使用的資料會導致記憶體洩漏。分配的記憶體,記憶體洩漏不會釋放,即使它從來沒有再次使用。洩漏會導致應用程式的記憶體使用量日益增加,這反過來又可能會導致系統性能較差或宕機。

記憶體管理規則

我們建立自己的物件,當他們不再需要的時候,釋放他們。

保留需要使用的物件。如果沒有必要必須釋放這些物件。

不要釋放我們沒有擁有的物件。

使用記憶體管理工具

可以用Xcode工具儀器的幫助下分析記憶體的使用情況。它包括的工具有活動監視器,分配,洩漏,殭屍等

分析記憶體分配的步驟

1. 開啟一個現有的應用程式。

2. 選擇產品,配置檔案如下所示

mm_Profile

3.在以下介面中選擇 Allocations 和 Profile。

mm_ProfileSelect

4. 我們可以看到不同物件的記憶體使用情況

5. 你可以切換檢視控制器檢視記憶體是否釋放。

mm_Instruments_Allocations

6.同樣我們可以使用 Activity Monitor 來檢視記憶體在應用程式中的分配的情況。

mm_Instruments_ActivityMonitor

7. 這些工具可以幫助我們瞭解記憶體的使用情況及在什麼地方可能發生洩漏。