iOS內(nèi)存管理方案

iOS內(nèi)存管理方案:

由以下三種方案結(jié)合

Tagged Pointer(64位系統(tǒng))

儲(chǔ)存NSNumber以及NSDate等類型,以節(jié)省內(nèi)存及提高效率,指針不指向任何地址,指針由標(biāo)識+值構(gòu)成

NONPOINTER_ISA(非指針類型)

isa指針除了含有內(nèi)存地址,還含有其他字段

  • 第一位的0或1代表是純地址isa指針還是NONPOINTER_ISA
  • 第二位代表是否有關(guān)聯(lián)對象
  • 第三位代表是否有C++代碼
  • 接下來33位代表指向的內(nèi)存地址
  • 接下來弱引用標(biāo)記
  • 接下來dealloc標(biāo)記等

(引用計(jì)數(shù)表和weak表)散列表

  • SideTables在非嵌入式的64位系統(tǒng)里有64張SideTable表
  • 每一張SideTable表主要由三部分組成:自旋鎖、引用計(jì)數(shù)表、弱引用表
  • 全局的引用計(jì)數(shù)表不存在同一張表里,是為了避免資源競爭,解決效率問題
  • 引用計(jì)數(shù)表加入了分離鎖概念,將一張表拆分為多個(gè)部分,對他們分別加鎖,使得可以并發(fā)操作,提高執(zhí)行效率
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容