美文网首页
Class的底层结构

Class的底层结构

作者: 水中的蓝天 | 来源:发表于2021-01-12 23:38 被阅读0次
struct bucket_t {
cache_key_t  _key; //SEL作为key  如: _key --> @selecter(test)
IMP _imp;   //函数的内存地址       如: _imp --> test 方法的地址
}
struct cache_t {
struct bucket_t   *_buckets; //散列表
mask_t   _mask;   //散列表的长度减一;_mask的值是随着存储的增加会发生变化,当内存空间用完了就会扩容(变为原来空间的两倍),扩容后清空缓存,再来一遍
mask_t _occupied; //已经缓存的方法数量
}
位域宏定义(真机环境arm64)
# if __arm64__
#   define ISA_MASK        0x0000000ffffffff8ULL
#   define ISA_MAGIC_MASK  0x000003f000000001ULL
#   define ISA_MAGIC_VALUE 0x000001a000000001ULL
#   define ISA_BITFIELD                                                      \
     uintptr_t nonpointer        : 1; 拿二进制的1位来存储  \
     uintptr_t has_assoc         : 1;                                       \
     uintptr_t has_cxx_dtor      : 1;                                       \
     uintptr_t shiftcls          : 33; /*MACH_VM_MAX_ADDRESS 0x1000000000*/ \
     uintptr_t magic             : 6;                                       \
     uintptr_t weakly_referenced : 1;                                       \
     uintptr_t deallocating      : 1;                                       \
     uintptr_t has_sidetable_rc  : 1;                                       \
     uintptr_t extra_rc          : 19
#   define RC_ONE   (1ULL<<45)
#   define RC_HALF  (1ULL<<18)

关联对象

关联对象.png

SideTable

SideTable.png
内存管理之weak指针

自动释放池

线程池
线程池能有效的处理多个线程的并发问题,避免大量的线程因为互相强占系统资源导致阻塞现象,能够有效的降低频繁创建和销毁线程对性能所带来的开销。真正线程池的实现是通过ThreadPoolExecutor,ThreadPoolExecutor通过配置不同的参数配置来创建线程池
参考1
参考2

atomic之PropertyLock

相关文章

  • Class的底层结构

    类的底层结构类的底层结构.png 缓存列表[https://www.jianshu.com/p/f5ff6ce03...

  • Objective-C中Class的本质

    类(class)和元类(meta-class)底层都是 objc_class 结构体的指针,内存中就是结构体。 之...

  • [iOS]2、类的原理

    1、class的底层结构探究 通过如下代码进行 class 的结构调试 补充:1、objc_class 继承自 o...

  • iOS底层 -- class的底层结构

    1.isa指针 从64bit开始,isa需要进行一次位运算,才能计算出真实地址 class、meta-class对...

  • iOS Class的结构

    一、底层结构 我们可以通过runtime的底层源码看的class的底层结构体,简化如下: 然后点进去之后他们之间的...

  • iOS底层原理 - 探寻Runtime本质(二)

    1. Class结构的本质 上一章对isa结构的本质做了探究,下面探究Class的内部结构。 由iOS底层原理 -...

  • iOS底层 - Class的结构

    本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗...

  • iOS-OC底层06:cache方法缓存

    前沿 对象的底层实现是结构体objc_object,类的底层实现是结构体objc_class,因为objc_cla...

  • iOS底层之cache_t探究

    我们在iOS底层之类的结构分析分析了类的内部结构,而类的C/C++底层实际是objc_class结构体,其中包含了...

  • Class类型的本质

    1. Class类型的底层结构 1.1 objc_class 我们知道不管是类对象还是元类对象,类型都是Class...

网友评论

      本文标题:Class的底层结构

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