1. 程式人生 > >iOS效能優化

iOS效能優化

記憶體5大區

  1. 棧區:由編譯器自動完成分配和釋放,主要儲存 區域性變數 方法引數
  2. 堆區:需要程式設計師手動開闢記憶體
  3. BSS段(全域性區、靜態區):程式執行記憶體中的資料一致存在,程式結束後由系統釋放
  4. 常量區(資料段):專門存放常量,程式結束後由系
  5. 程式程式碼區:用於儲存程式執行時的程式碼,程式碼會被編譯成二進位制存進記憶體的程式程式碼區

棧區和堆區是執行時分配的記憶體,其他區時編譯時分配的記憶體

棧區特點

棧區分配的地址是連續的,由高到低的分配

堆區特點

堆區分配地址是不連續的,堆區的訪問速度沒有棧區快

引用計數


  1. 如果物件使用了TaggedPointer, 蘋果會直接將其指標值作為引用計數返回
  2. 引用計數可以直接儲存在優化過的isa指標中
  3. 如果isa指標儲存不下,引用計數就會把一部分儲存在一個散列表中
TaggedPointer
  1. TaggedPointer 專門用來儲存小的物件,例如NSNumber和NSDate
  2. TaggedPointer 指標的值不在是地址,而是真正的值。所以實際上他就是一個普通的值 他的記憶體並不儲存在堆中
  3. 在記憶體讀取速度快