Tagged pointer 初识

2020-09-14  本文已影响0人  代码之道

问题:对于NSNumber和NSDate一类的变量本身的值所需要的占用的内存大小常常不需要8字节。对于64位系统,NSNumber对象来说, NSNumber对象指针占8字节 + NSNumber对象的值和 isa占16字节 = 24字节 。

实际需要占用24字节,这样内存造成了浪费,效率也不高。

为了解决这个问题,苹果引入了tagged pointer对象,苹果将一个指针拆分成两部分,一部分直接保存数据,另一部分作为特殊标记,表示这是一个特别的指针,不指向任何地方。当8字节可以承载表示的数值时,系统就会以tagged pointer的方式生成指针,如果8字节承载不了,则用以前的方式生成普通指针。

特点

因此,苹果引入了Tagged Pointer,不但减少了64位机器下的内存占用,还提高了运行效率,完美地解决了小内存对象在存储和访问效率的上的问题。

上一篇 下一篇

猜你喜欢

热点阅读