iOS内存分配

作者: senpaiLi | 来源:发表于2018-09-27 14:16 被阅读6次

摘自阳君的博客

1. RAM&ROM

RAM与ROM就是具体的存储空间,统称为存储器。

1.RAM(random access memory):运行内存,CPU可以直接访问,读写速度非常快,但是不能掉电存储。它又分为:

  • 动态DRAM,速度慢一点,需要定期的刷新(充电),我们常说的内存条就是指它,价格会稍低一点,手机中的运行内存也是指它。
  • 静态SRAM,速度快,我们常说的一级缓存,二级缓存就是指它,当然价格高一点。

2.ROM(read only memory):存储性内存,可以掉电存储,例如SD卡。

2. 内存五区
  1. 栈区(stack)

    • 栈区地址从高到低分配;
    • 存放的局部变量(先进后出)一旦出了作用域就会被销毁;
    • 大量的局部变量,深递归,函数循环调用都可能耗尽栈内存而造成程序崩溃 。
  2. 堆区(heap)

    • 堆区的地址是从低到高分配。
    • ARC下OC对象runloop循环结束后(kCFRunLoopBeforeWaiting后)自动释放,CF对象需要CFRelease(CFTypeRef cf)手动释放。
  3. 全局区/静态区(static)

    • 包括两个部分:未初始化过和初始化过。(全局区/静态区)在内存中是放在一起的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和静态变量在相邻的另一块区域;
      eg:int a;未初始化的。int a = 10;已初始化的。
  4. 常量区

    • 常量字符串就是放在这里,还有const常量;
  5. 代码区

    • 存放App代码,4S(iOS7)只有74M;
image
3. RAM&ROM协调工作
image
4. App程序启动

App程序启动,系统会把开启的那个App程序从Flash或ROM里面拷贝到内存(RAM),然后从内存里面执行代码。

另一个原因是CPU不能直接从内存卡里面读取指令(需要Flash驱动等等)。

相关文章

  • 探索iOS内存分配

    探索iOS内存分配 探索iOS内存分配

  • iOS 性能优化 - Allocations分析内存分配

    iOS 性能优化 - Allocations分析内存分配 iOS 性能优化 - Allocations分析内存分配

  • iOS底层探究 - 内存对齐

    目录1:内存对齐的原因2:内存对齐的规则3:结构体内存分配演练以及在iOS中对象成员的内存分配探索 一 :内存对齐...

  • iOS内存分配

    iOS的内存分配大致可以分为以下五种:代码区、全局/静态区、常量区、堆区和栈区。 占用内存的行为 创建对象 定义变...

  • iOS内存分配

    1 RAM&ROM RAM与ROM就是具体的存储空间,统称为存储器。 RAM(random access memo...

  • iOS内存分配

    摘自阳君的博客 1. RAM&ROM RAM与ROM就是具体的存储空间,统称为存储器。 1.RAM(random ...

  • iOS内存分配

    内存分区:1)、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数...

  • iOS内存分配

    iOS对象有3种: 实例对象 类对象 元类对象 对象(对象都是结构体)的内存中,包含的指针: isa 实例对象is...

  • iOS 内存分配

    1.栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等。栈是系统数据结构,对应线程/进程是唯...

  • iOS内存分配

    1.对象占用内存 我们在开发的过程中,会使用到很多的对象,每个对象都需要分配内存,某些情况下,我们需要完成一个业务...

网友评论

    本文标题:iOS内存分配

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