讲一下iOS内存管理的理解
实际上是三种方案的结合
1.TaggedPointer(针对类似于NSNumber的小对象类型)
2.NONPOINTER_ISA(64位系统下)
第一位的0或1代表是纯地址型isa指针,还是NONPOINTER_ISA指针。
第二位,代表是否有关联对象
第三位代表是否有C++代码。
接下来33位代表指向的内存地址
接下来有弱引用的标记
接下来有是否delloc的标记....等等
3.散列表(引用计数表、weak表)
SideTables表在 非嵌入式的64位系统中,有 64张SideTable表
每一张SideTable主要是由三部分组成。自旋锁、引用计数表、弱引用表。
全局的引用计数之所以不存在同一张表中,是为了避免资源竞争,解决效率的问题。
引用计数表中引入了分离锁的概念,将一张表分拆成多个部分,对他们分别加锁,可以实现并发操作,提升执行效率
热文推荐
作者:全网iOS面试题总结
链接:https://www.jianshu.com/p/743b1dcf4ba0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
网友评论