美文网首页
iOS---内存管理(1)

iOS---内存管理(1)

作者: BabyNeedCare | 来源:发表于2021-12-06 13:46 被阅读0次

内存管理有如下划分:

image.png

内存布局

image.png

stack(栈区):方法调用,向下增长(如图箭头)
heap(堆区):通过alloc等分配的对象, 向上增长(如图箭头)
bss:未初始化的全局变量等
data:已初始化的全局变量等
text:程序代码

内存管理方案

Q:iOS操作系统是怎样对内存进行管理的?

要想回答这个问题,要先从场景上入手。
iOS操作系统针对不同场景,会提供不同的内存管理方案。

A:
*TaggedPointer (如NSNumber等小对象)
*NONPOINTER_ISA (对于64位架构下的应用程序, 在64位架构下,ISA指针本身是占64比特位的,实际上,有32位/40比特位就够用了,剩余比特位实际是浪费的,苹果为了提高内存利用率,在iSA当中剩余的比特位中存储了一些关于内存管理方面的相关的数据内容)
*散列表(复杂的数据结构,其中包括了引用计数表和弱引用表)

NONPOINTER_ISA

arm64架构

0-15位:
*indexed(0/1):

0:代表使用的isa指针只是一个纯的isa指针,它里面的内容就直接代表了当前对象的类对象的地址。
1:代表使用的isa指针存储的不仅是类对象的地址,而且还有一些内存管理方面的数据。

*has_assoc(是否有关联对象,0/1)

0:没
1:有

*has_cxx_dtor(是否有使用到C++相关的代码/C++语言相关的内容,0/1)

0:没
1:有
ARC中也可以用这个标识位来表示对象是通过ARC来进行内存管理的

*shiftcls(表示当前对象的类对象的指针地址)
image.png
*magic
*weakly_referenced(标识这个对象是否有响应的弱引用指针)
*deallocating(标识这个对象当前是否正在进行dealloc操作)
*has_sidetable_rc(是指当前这个isa指针当中如果所存储的引用计数已经达到上限了,那么需要外挂一个sidetable这样一个数据结构去存储相关的引用计数内容,也就是散列表)
*extra_rc(额外的引用计数,当引用计数在一个很小的值的范围之内,就会存到这个isa指针当中,而不是单独的引用计数表去存它的引用计数)
image.png

总结:通过NONPOINTER_ISA 64个比特位的分析可知,关于内存管理,不仅仅是散列表,还有isa部分的extra_rc来存储相关的引用计数值。

相关文章

  • iOS---内存管理(1)

    内存管理有如下划分: 内存布局 stack(栈区):方法调用,向下增长(如图箭头)heap(堆区):通过alloc...

  • iOS---内存管理

    笔者现在还是一个刚入门 iOS 开发的菜鸟,跟着部门的大佬在学习。最近大佬让我去了解一下 iOS 的内存管理机制,...

  • iOS---内存管理(3)

    数据结构 *Spinlock_t*RefcountMap*weak_table_t Spinlock_t: *Sp...

  • iOS---内存管理(2)

    散列表方式 在源码当中是通过SideTables()结构来实现的。 在SideTables()结构下,挂有很多Si...

  • 第10章 内存管理和文件操作

    1 内存管理 1.1 内存管理基础 标准内存管理函数堆管理函数虚拟内存管理函数内存映射文件函数 GlobalMem...

  • Swift中的内存管理

    1、内存管理,weak和unowned2、@autoreleasepool3、C 指针内存管理 1、内存管理,we...

  • 内存管理

    目录一、内存分区 1、RAM和ROM 2、内存的五大分区二、内存管理 1、OC内存管理是指什么?OC内存管理的本质...

  • OC语法_IOS内存管理

    目录: 1、内存的定义 2、内存管理的基础概念 3、IOS系统中的内存管理 1、内存的定义 1.1. 内存是计算...

  • Android内存管理机制

    Android内存管理机制 [转载自大果仁Pareto的 android内存管理机制] 1、基于Linux内存管理...

  • 内存管理:不看白不看,看了就是赚

    一、iOS的内存管理方式 1、小对象的内存管理 -- Tagged Pointer 2、普通对象的内存管理 -- ...

网友评论

      本文标题:iOS---内存管理(1)

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