美文网首页
7、Runtime 方法缓存的实现机制

7、Runtime 方法缓存的实现机制

作者: 龙之天下 | 来源:发表于2025-05-12 11:35 被阅读0次

1. 缓存的基本结构

Runtime 使用 cache_t 结构体来实现方法缓存:

struct cache_t {
    struct bucket_t *_buckets;  // 散列表
    mask_t _mask;              // 散列表大小掩码
    mask_t _occupied;          // 已使用的槽位数量
}

2. 缓存实现原理

  1. 散列表存储

    • 使用 bucket(桶)数组存储缓存
    • 每个 bucket 存储 selector 和 IMP 的键值对
    • 使用散列算法计算 selector 的存储位置
  2. 缓存查找过程

    • 计算 selector 的散列值
    • 通过掩码计算在缓存表中的索引位置
    • 如果发生冲突,使用线性探测解决
  3. 缓存更新策略

    • 当缓存表占用率达到阈值时扩容
    • 扩容时会清空原有缓存
    • 采用懒加载方式初始化缓存

3. 性能优化设计

  1. 空间优化

    • 使用掩码而不是取模运算
    • 采用紧凑的数据结构
    • 动态调整缓存大小
  2. 时间优化

    • 使用位运算代替除法
    • 采用线性探测而不是链表
    • 缓存访问采用原子操作

相关文章

  • Runtime主要用处

    深入理解Objective-C Runtime机制 一:消息转发流程和机制 1、实例方法:本类的缓存方法列表->本...

  • 面试问题总结

    1.runtime的缓存机制是什么?答案:根据runtime类的数据结构。调用某个方法,首先通过isa和super...

  • 方法调用底层实现

    runtime怎么实现方法的调用 :消息机制,runtime系统会把方法调用转化为消息发送。即objc-msgSe...

  • iOS 防止方法未实现造成的崩溃

    实现原理基于runtime的方法交换和消息发送机制 方法交换 method_exchangeImplementat...

  • Runtime

    runtime运行时机制1:通过runtime,实现方法交换(交换两个类方法、交换两个实例方法)2:通过runti...

  • Day3

    1 runtime运行时机制1:通过runtime,实现方法交换(交换两个类方法、交换两个实例方法)。2:通过ru...

  • runtime系列文章总结

    《iOS Runtime详解(消息机制,类元对象,缓存机制,消息转发)》《消息转发机制与Aspects源码解析》《...

  • iOS 底层拾遗:objc_msgSend 与方法缓存

    前言 Runtime 消息发送与转发流程总是大家关注的重点,却常常忽略方法缓存机制这个显著提升 objc_msgS...

  • Runtime - 方法发送机制土味讲解

    Runtime - 方法发送机制土味讲解 Runtime - 方法发送机制土味讲解

  • Runtime 二:msg_msgSend执行流程

    在Runtime 一: OC 方法的底层数据结构和存储机制我们知道了OC类的底层结构,类方法的存储位置以及方法缓存...

网友评论

      本文标题:7、Runtime 方法缓存的实现机制

      本文链接:https://www.haomeiwen.com/subject/qatpijtx.html