对于不同场景,系统提供的有不同的内存管理方案,大致有如下三种:
-TaggedPointer (对于一些小对象,比如说NSNumber等采用此种方案)
-NONPOINTER_ISA (64位架构下iOS应用程序),实际上32位或40就够用,存储了内存管理的相关数据内容,提高了内存利用率
-散列表 (散列表为复杂的数据结构,包含了引用计数表和弱引用表)
sideTables为什么是好几张表8*8,SideTables的本质是一张Hash表
采用分离锁实现并发操作,解决了自旋锁“忙等”现象,Spinlock_t适用于轻量访问
引用计数表是通过哈希表来实现,提高查找效率,因为插入和查询都是通过同一个哈希算法或函数来实现的
image.png
网友评论