2. 内存分配

2020-09-08  本文已影响0人  894bf50c581c

==程序在内存空间分布为:==

由低向高 各个地址块 不连续

高地址
低地址

==内存管理方案==分三部分

TaggedPointer  //存放NSNumber等小对象
NONPOINTER_ISA        //arm64位架构下内存管理方案
散列表SideTables  //是由一个个sideTable结构组成,是一个哈希表,sideTable包含弱引用表和引用计数表和自旋锁
NONPOINTER_ISA

arm64架构下才用

散列表方式 SideTables()结构

SideTables()实际上是个哈希表,可通过一个对象指针,来找到它的引用计数表或者弱引用表具体在哪个sideTable中。

[图片上传失败...(image-8c89dd-1599486679760)]

==栈和堆==

栈是一个用来存储局部和临时变量的存储空间

NSObject *obj = [[NSObject alloc] init];

系统会在栈上存储obj这个指针变量,它所指的对象在堆中。通过[NSObject alloc]系统会为其在堆中开辟一块内存空间。
栈对象的生命周期不适于Objective-C的引用计数内存管理方法

上一篇 下一篇

猜你喜欢

热点阅读