内存管理
内存布局
内存管理
stack 方法调用 地址自上而下
heap 通过alloc等分配的对象 地址自下而上
bss 未初始化的全局变量
data 已初始化的全局变量
text 程序代码

内存管理方案
TaggedPointer : 小对象 NSNumber等
NONPOINTER_ISA :
散列表:

NONPOINTER_ISA
arm64架构
内存管理
内存管理
散列表方式
内存管理
内存管理
内存管理
内存管理

内存管理
内存管理
数据结构
内存管理
内存管理
内存管理
内存管理
MRC
手动引用计数
alloc
retain
release
retaincount
autoreleasepool

dealloc
ARC
自动引用计数
LLVM(编译器)和Runtime协作的结果
禁止调用retain、dealloc、release、retaincount
新增 weak strong 关键字

引用计数管理
alloc实现:经过一系列调用,最终调用C的alloc,此时并没有设置引用计数为1
retain实现:
内存管理
release实现:
内存管理
retaincount实现:
内存管理
dealloc实现:
内存管理
内存管理
内存管理
内存管理
弱引用管理
内存管理
内存管理
清除weak变量,自动置nil
内存管理
自动释放池
内存管理
内存管理
内存管理
数据结构
内存管理
内存管理
内存管理
内存管理
内存管理
内存管理
内存管理
pop:
内存管理
内存管理
循环引用
自循环引用:成员变量赋值原对象
相互循环引用:A B 对象指向彼此原对象
多循环引用:A B C 循环指向原对象

代理
block
nstimer
大循环

具体方案:
__weak
__block
__unsafe_unretain【不建议使用】
内存管理

相关文章: