![iOS之深入解析内存管理MRC与ARC机制](https://600zi.400zi.cn/uploadfile/img/14/837/ae5a4cb27c2a35c8cc1390824f1ee153.jpg)
一、内存管理
① 什么是内存管理?
当我们编写程序的时候,会声明各种各样的变量,编写各种各样的代码,它们都会占用内存,但是并不是所有的代码和内存都是由我们进行释放。内存分为 5 个区域:栈、堆、bss段、数据段、代码段。 栈:存放的是局部变量,当局部变量的作用域结束的时候就会由系统进行释放局部变量所占用的内存空间;堆:存放的是程序员手动申请的变量,手动申请的变量可以由程序员手动编写代码进行释放;bss段:存放的是为初始化的全局变量和静态变量,当全局变量和静态变量进行初始化的时候系统就会回收他们所占用的空间,然后把它们存放到数据段;数据段:存放的是已经初始化的全局变量和静态变量和常量,当程序结束的时候由系统进行回收释放;代码段:存放的是我们编写的代码,当程序结束的时候由系统进行回收释放; 因此,需要我们管理的其实只有堆空间。其实除了内存区,还有内核区(系统用来进行内核处理操作的区域)和保留区(预留给系统处理 nil 等)。以 4GB 手机为例,系统将其中的 3GB 给了五大区+保留区,剩余的 1GB 给内核区使用,如下所示: