iOS-13 内存管理面试题(讲一下 `iOS` 内存管理的理解

2019-08-12  本文已影响0人  leesen

讲一下iOS内存管理的理解

实际上是三种方案的结合

1.TaggedPointer(针对类似于NSNumber的小对象类型)

2.NONPOINTER_ISA(64位系统下)

第一位的0或1代表是纯地址型isa指针,还是NONPOINTER_ISA指针。

第二位,代表是否有关联对象

第三位代表是否有C++代码。

接下来33位代表指向的内存地址

接下来有弱引用的标记

接下来有是否delloc的标记....等等

3.散列表(引用计数表、weak表)

SideTables表在 非嵌入式的64位系统中,有 64张SideTable表

每一张SideTable主要是由三部分组成。自旋锁、引用计数表、弱引用表。

全局的引用计数之所以不存在同一张表中,是为了避免资源竞争,解决效率的问题。

引用计数表中引入了分离锁的概念,将一张表分拆成多个部分,对他们分别加锁,可以实现并发操作,提升执行效率

热文推荐

2019 全网 iOS 面试题以及答案总结!

作者:全网iOS面试题总结

链接:https://www.jianshu.com/p/743b1dcf4ba0

来源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇下一篇

猜你喜欢

热点阅读