程序的內存分配和管理

RAM:運行內存,不能掉電存儲。ROM:存儲性內存,能夠掉電存儲,例如內存卡、Flash。
因爲RAM類型不具有掉電存儲能力(即一掉電數據消失),因此app程序通常存放於ROM中。RAM的訪問速度要遠高於ROM,價格也要高。
 
App程序啓動,系統會把開啓的那個App程序從Flash或ROM裏面拷貝到內存(RAM),而後從內存裏面執行代碼。
CPU不能直接從內存卡里面讀取指令
 
棧區:通常存放函數參數,局部變量等值,由系統自動分配和管理,程序員沒必要關心。存放裏面的數據,聽從先進後出的原則。
堆區:由程序員申請,管理和內存回收。數據儲存的結構是鏈表。
全局區/靜態區:儲存全局變量和靜態變量。
文字常量區:主要儲存字符串常量。
程序代碼區:存放程序的二進制代碼。
 
 
在iOS中,堆區的內存是應用程序共享的,堆中的內存分配是系統負責的;
系統使用一個鏈表來維護全部已經分配的內存空間(系統僅僅紀錄,並無論理具體的內容);
變量使用結束後,須要釋放內存,OC中是根據引用計數==0,就說明沒有任何變量使用該空間,那麼系統將直接收回;
相關文章
相關標籤/搜索