zoukankan      html  css  js  c++  java
  • Tagged Pointer

    http://blog.csdn.net/null29/article/details/71191044

    10. Tagged Pointer 对象

    iPhone 5s 配备了首个采用 64 位架构的 A7 双核处理器,同时提出了 Tagged Pointer 的概念。对于 64 位系统,引入 Tagged Pointer 后,相关逻辑能减少一半的内存占用,3 倍的访问速度提升,100 倍的创建、销毁速度提升。

    10.1 原有系统的问题

    举个例子:

    • NSNumber 对象,在 32 位 CPU 下占 4 个字节,在 64 位 CPU 下占 8 个字节;
    • 指针在 32 位 CPU 下占 4 个字节,在 64 位 CPU 下占 8 个字节;

    所以如果没有 Tagged Pointer 对象,从 32 位机器迁移到 64 位机器中,虽然逻辑没有变化,但是对象所占用的内存会翻倍:

    32 位

    10.2 Tagged Pointer 介绍

    为了改进上面提到的内存占用和效率问题,苹果提出了 Tagged Pointer 对象。将一个对象的指针拆成两部分,一部分直接保存数据,另一部分作为特殊标记,表示这是一个特别的指针,不指向任何一个地址,64 位 CPU 下 NSNumber 的内存图变成下面这样:

    64 位

    10.3 Tagged Pointer 特点

    1. Tagged Pointer 专门用来存储小的对象,例如 NSNumber 和 NSDate;
    2. Tagged Pointer 指针的值不再是地址,而是真正的值。所以实际上它不再是一个对象了,只是一个披着对象“皮”的普通变量而已,所以,它的内存并不存储在堆中;
    3. 在内存读取上有着以前 3 倍的效率,创建时比以前快 106 倍。
  • 相关阅读:
    leetcode5
    leetcode4
    maven笔记
    枚举使用笔记
    List遍历删除解决方案:遍历删除,迭代删除,removeIf
    java笔记(web部分)
    webview使用
    json数据格式+gson解析json问题总结
    android:layout_weight的简单使用
    欢迎界面效果
  • 原文地址:https://www.cnblogs.com/feng9exe/p/7240365.html
Copyright © 2011-2022 走看看