有效的內存管理對性能非常重要淹魄。減少內存使用不僅可以降低內存空間郁惜,同時減少CPU時間。為了正確的優(yōu)化代碼甲锡,你需要理解底層系統(tǒng)如何管理內存兆蕉。
OS X and iOS平臺包涵了全集成,始終開啟的虛擬內存系統(tǒng)缤沦。Both systems also provide up to 4 gigabytes of addressable space per 32-bit process. In addition, OS X provides approximately 18 exabytes of addressable space for 64-bit processes虎韵。即使擁有4G或者更多的RAM的計算機,系統(tǒng)也很少將這些RAM分配給一個獨立的進程缸废。
為了進程可以訪問它們完整的4 gigabyte or 18 exabyte 地址空間包蓝,OS X 利用硬盤保存當前未使用的數(shù)據驶社。當內存將用完時,需要將目前不使用的內存寫入到磁盤测萎,用來給新的數(shù)據提供空間亡电。存儲未使用數(shù)據的磁盤部分被稱為backing store,因為它為主存提供了backup storage硅瞧。
盡管OS X 提供了backing store份乒,但是iOS沒有。在iPhone應用中腕唧,那些已經在磁盤的只讀數(shù)據(例如code pages)就會簡單地從內存移除并且在需要的時候重新加載或辖。可寫數(shù)據由操作系統(tǒng)管理四苇,永遠不會從內存移除孝凌。相反,如果空閑內存數(shù)量降低到了下限月腋,系統(tǒng)要求應用自愿地釋放內存蟀架,用來為新數(shù)據提供空間。沒有釋放足夠內存的應用會終止運行榆骚。
注意:不像大多數(shù)的UNIX-based的操作系統(tǒng)片拍,OS X并不是采用預分配磁盤分區(qū)的方案來生成backing store。相反妓肢,它使用在機器的啟動分區(qū)的所有可用空間捌省。