iOS内存管理方案

iOS内存管理方案:

由以下三种方案结合

Tagged Pointer(64位系统)

储存NSNumber以及NSDate等类型,以节省内存及提高效率,指针不指向任何地址,指针由标识+值构成

NONPOINTER_ISA(非指针类型)

isa指针除了含有内存地址,还含有其他字段

  • 第一位的0或1代表是纯地址isa指针还是NONPOINTER_ISA
  • 第二位代表是否有关联对象
  • 第三位代表是否有C++代码
  • 接下来33位代表指向的内存地址
  • 接下来弱引用标记
  • 接下来dealloc标记等

(引用计数表和weak表)散列表

  • SideTables在非嵌入式的64位系统里有64张SideTable表
  • 每一张SideTable表主要由三部分组成:自旋锁、引用计数表、弱引用表
  • 全局的引用计数表不存在同一张表里,是为了避免资源竞争,解决效率问题
  • 引用计数表加入了分离锁概念,将一张表拆分为多个部分,对他们分别加锁,使得可以并发操作,提高执行效率

你可能感兴趣的:(iOS内存管理方案)