iOS內存分配

1 RAM&ROM

RAM與ROM就是具體的存儲空間,統稱爲存儲器。

  1. RAM(random access memory):運行內存,CPU可以直接訪問,讀寫速度非常快,但是不能掉電存儲。它又分爲:
    1. 動態DRAM,速度慢一點,需要定期的刷新(充電),我們常說的內存條就是指它,價格會稍低一點,手機中的運行內存也是指它。
    2. 靜態SRAM,速度快,我們常說的一級緩存,二級緩存就是指它,當然價格高一點。
  2. ROM(read only memory):存儲性內存,可以掉電存儲,例如SD卡。

2 內存五區

  1. 棧區(stack)
    • 棧區地址從高到低分配;
    • 存放的局部變量(先進後出)一旦出了作用域就會被銷燬;
    • 大量的局部變量,深遞歸,函數循環調用都可能耗盡棧內存而造成程序崩潰 。
  2. 堆區(heap)
    • 堆區的地址是從低到高分配。
    • ARC下OC對象runloop循環結束後(kCFRunLoopBeforeWaiting後)自動釋放,CF對象需要CFRelease(CFTypeRef cf)手動釋放。
  3. 全局區/靜態區(static)
    • 包括兩個部分:未初始化過和初始化過。(全局區/靜態區)在內存中是放在一起的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和靜態變量在相鄰的另一塊區域;
      eg:int a;未初始化的。int a = 10;已初始化的。
  4. 常量區
    • 常量字符串就是放在這裏,還有const常量;
  5. 代碼區
    • 存放App代碼,4S(iOS7)只有74M;

3 RAM&ROM協調工作

 


Appendix

unix之內存管理

linux內存管理

C語言中內存分配

深入淺出-iOS內存分配與分區

iOS開發中的內存分配與分區

iOS之CF和OC之間類型轉換

Revision History

時間 描述
2017-03-15 博文完成

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章