iOS內(nèi)存管理方案:
由以下三種方案結(jié)合
儲(chǔ)存NSNumber以及NSDate等類型,以節(jié)省內(nèi)存及提高效率,指針不指向任何地址,指針由標(biāo)識+值構(gòu)成
isa指針除了含有內(nèi)存地址,還含有其他字段
- 第一位的0或1代表是純地址isa指針還是NONPOINTER_ISA
- 第二位代表是否有關(guān)聯(lián)對象
- 第三位代表是否有C++代碼
- 接下來33位代表指向的內(nèi)存地址
- 接下來弱引用標(biāo)記
- 接下來dealloc標(biāo)記等
- SideTables在非嵌入式的64位系統(tǒng)里有64張SideTable表
- 每一張SideTable表主要由三部分組成:自旋鎖、引用計(jì)數(shù)表、弱引用表
- 全局的引用計(jì)數(shù)表不存在同一張表里,是為了避免資源競爭,解決效率問題
- 引用計(jì)數(shù)表加入了分離鎖概念,將一張表拆分為多個(gè)部分,對他們分別加鎖,使得可以并發(fā)操作,提高執(zhí)行效率