美文网首页
__cf_tsanReadFunction ___Copy &

__cf_tsanReadFunction ___Copy &

作者: Xavier丶xie | 来源:发表于2021-12-15 09:43 被阅读0次

__cf_tsanReadFunction

可变字典的内存分 4 个部分:

Class isa :代表类实例的类型
id *buffer:指向可变字典保存的键值对
struct state:代表可变字典的各种状态
used 代表已经使用的空间大小,与开发者常用的 count 属性对应
mutbits 代表对字典变更的次数。初始化时是 1,增删会加 1
szidx 通过搭配 常量数组 __NSDictionarySizes ,获取字典的容量
copyeKeys: 代表需要复制 key
struct __cow_state_t *cow:会指向一个结构体 __cow_state_t
cow_lock:多线程对单个可变字典进行复制时,可能存在崩溃或者内存泄露,所以需要锁进行多线程保护
copyCount:16:代表对可变字典 copy的次数
mutableCopyCount:16:代表对可变字典进行 mutableCopy 的次数
NSMutableDictionary 通过引入一个指向结构体:__cow_state_t 的指针实现了 cow 机制

当复制发生时,__cow_state_t 的引用计数会加 1,并且多个字典会共享一份 __cow_state_t 和 buffer。从而实现常量时间的复制成本

__cf_tsanReadFunction
__cf_tsanReadFunction

相关文章

  • __cf_tsanReadFunction ___Copy &

    __cf_tsanReadFunction 可变字典的内存分 4 个部分: Class isa :代表类实例的类型...

  • Copy Copy Copy

    说到Copy 大多会想到浅复制(指针复制),深复制(内容复制)。看一张图: 你会发现对于集合类型,深复制那写的是...

  • 2018-09-27

    copy的问题 copy.copy返回浅copy copy.deepcopy返回深copy 1fromcopyim...

  • 关于深copy和浅copy

    深copy 所谓深copy是指内容copy 浅copy 所谓浅copy是指指针copy 集合的单层深copy 在多...

  • golang 值和指针

    地址copy,引用copy 值copy

  • Python的直接赋值,深拷贝和浅拷贝以及使用场景

    概述 深浅拷贝用法来自copy模块导入模块: import copy浅拷贝: copy.copy深拷贝: copy...

  • day 9

    浅拷贝和深拷贝 copy.copy(对象):浅拷贝 copy.deepcopy(对象):深拷贝 copy.copy...

  • day-9-函数基础

    import copy"""copy.copy(对象):浅拷贝copy.deepcopy(对象):深拷贝""" a...

  • 深浅拷贝判断地址是否相同

    导入 import copy 模块 浅拷贝:copy.copy() 深拷贝:copy.deepcopy() 代码:...

  • 内存管理

    ARC MRC 属性 循环引用 深浅copy一 ,先说深浅copy概念很简单 浅copy 就是copy...

网友评论

      本文标题:__cf_tsanReadFunction ___Copy &

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