在arm64架构下,指针在内存中占8个字节/byte,即64位/bit(1byte=8bit),64比特位中存储的内容有:
- 标记是否是纯的ISA指针,还是非指针型的NOPOINTER_ISA指针
indexed
- 标记是否有关联对象
has_assoc
- 标记对象是否使用到的C++相关内容,在ARC环境下标记对象是否通过ARC来管理的
has_cxx_dtor
- 标记当前对象的类对象的指针地址
shiftcls
magic
- 标记对象是否有弱引用指针
weakly_referenced
- 标记对象是否正在进行dealloc操作
deallocating
- 标记是否有sitetable结构用于存储引用计数
has_sidetable_rc
- 标记对象的引用计数(首先会存储在该字段中,当到达上限后,在存入对应的引用计数表中)
extra_rc
从第16位到第31位
32位到47位
48位到最后
网友评论