iOS内存管理方案

iOS内存管理方案:

由以下三种方案结合

Tagged Pointer(64位系统)

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

NONPOINTER_ISA(非指针类型)

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

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

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

  • SideTables在非嵌入式的64位系统里有64张SideTable表
  • 每一张SideTable表主要由三部分组成:自旋锁、引用计数表、弱引用表
  • 全局的引用计数表不存在同一张表里,是为了避免资源竞争,解决效率问题
  • 引用计数表加入了分离锁概念,将一张表拆分为多个部分,对他们分别加锁,使得可以并发操作,提高执行效率
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。