一、内存管理

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

iOS之深入解析内存管理MRC与ARC机制相关推荐

  1. Objective-c的内存管理MRC与ARC

    Objective-c的内存管理MRC与ARC   Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Referen ...

  2. iOS之深入解析内存管理Tagged Pointer的底层原理

    一.前言 ① Tagged Pointer 概念 iOS 开发者对"引用计数"这个名词肯定不陌生,引用计数是苹果为了方便开发者管理内存而引入的一个概念.当引用计数为 0 时,对象就 ...

  3. iOS之深入解析内存管理的引用计数retainCount的底层原理

    一.简介 ① 引用计数概念 OC 在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针. OC 在内存管理上采用了引用计数,它是一个简单而有效管理对象生命周期的方式. 在对象内部保存一个用来表 ...

  4. iOS之深入解析内存管理retain与release的底层原理

    一.内存管理 ① 内存管理原理 iOS 的每个对象内部都保存了一个与之相关联的整数,称为引用计数器(auto reference count): 每当使用 alloc.new 或者 copy 创建一个 ...

  5. iOS之深入解析内存管理散列表SideTables和弱引用表weak_table的底层原理

    一.SideTables 和 weak_table 的关系 在 runtime 中,有四个数据结构非常重要,分别是 SideTables,SideTable,weak_table_t 和 weak_e ...

  6. iOS之深入解析内存管理NSTimer的强引用问题

    一.强引用问题分析 现在有两个控制器 A.B,从 A push 到 B 控制器,在 B 控制器中有如下代码: self.timer = [NSTimer timerWithTimeInterval:1 ...

  7. 理解 iOS 和 macOS 的内存管理

    在 iOS 和 macOS 应用的开发中,无论是使用 Objective-C 还是使用 swift 都是通过引用计数策略来进行内存管理的,但是在日常开发中80%(这里,我瞎说的,8020 原则嘛?)以 ...

  8. 关于IOS的多任务以及内存管理

    看了很多FY为自己的可用内存是350MB还是380MB纠结.为了多优化出一点可用内存费脑筋.  IOS的任务管理和内存管理,跟windows是有很大差别的.很多FY习惯于用 windows的思维去看待 ...

  9. 详解JVM内存管理与垃圾回收机制5 - Java中的4种引用类型

    在Java语言中,除了基础数据类型的变量以外,其他的都是引用类型,指向各种不同的对象.在前文我们也已经知道,Java中的引用可以是认为对指针的封装,这个指针中存储的值代表的是另外一块内存的起始地址(对 ...

最新文章

  1. 独家 | 关于数据湖架构、战略和分析的8大错误认知(附链接)
  2. jquery 判断一个对象是否存在
  3. 高性能js之js文件的加载与解析
  4. Oracle中常用的命令,随着学习进度总结
  5. 这个世界太小了,刚才我们老师搞块板给我,叫我弄个android上去,我发现核心板是sate210——O(∩_∩)O~...
  6. Excel 使用VBA 使表格的值被修改后填充颜色标注
  7. led数字字体_技术丨体育场馆LED显示屏设计与安装要求
  8. 企业实战|CentOS8安装Zabbix 4.4
  9. Android ScrollView 使用总结
  10. [转]理解JSON:3分钟课程
  11. python数据分析04--双均线策略、金叉与死叉的理解
  12. 要运行python程序要安装什么_求你要我(2)
  13. c语言解一元二次方程虚根oj,请问怎么用C语言求一元二次方程的虚根
  14. 数字化转型常见的5种问题:除了意识和能力问题,还有什么?
  15. 商标权的取得方式有哪些
  16. 极简Python语法(5)
  17. Rockland 艾美捷丨TrueBlot链霉亲和素磁珠
  18. 深度学习电脑配置选择
  19. 中国软件:10个人20年坎坷路
  20. 一塔湖图(codevs 1024)

热门文章

  1. SpringBoot2.x整合Redis实战 4节课
  2. Gralde 网络代理
  3. Spring Annotation(@Autowire、@Qualifier)
  4. [svc][op]从历险压缩日志里网站pv uv统计
  5. Gmail POP3设置
  6. 启动指定参数_SpringBoot的三种启动方式
  7. 计算机中心述职报告诉,计算中心述职报告
  8. 图解MongoDB的连接与使用,通俗易懂
  9. ajax 入参为list_ajax向后台传入List
  10. Java黑皮书课后题第6章:*6.23(指定字符的出现次数)使用下面的方法头编写一个方法,找到一个字符串中指定字符的出现次数。编写一个测试程序,提示用户输入一个字符串以及一个字符,显示该字符出现次数