12、iOS系统内存机制

内存机制特点
  • 有限的可用空间
  • 低内存警告
  • 没有内存交换机制
    就是在内存紧张的时候不会把暂时不用的内存置换到硬盘上,PC机有这个机制
  • 使用虚拟内存机制
    内存分页5kB为一个Page,并不是所有Page都会被映射到内存上,Page有三种状态
    • Nonresident 表明该Page没有映射到内存上
    • Resident and clean 当时readonly文件加载到内存中的Page是clean memory,如framework、可执行文件、通过mmap(内存映射)方式读取的文件都是Resident and clean,就是内存紧张的时候会被unload出去,而需要的时候又load回来
    • Resident and dirty 非clean的page都是dirty,这种内存只有在进程被杀死的时候才能被收回。
      malloc申请的内存如果没用过就是Nonresident状态,用了就是 dirty状态
      mmap进来的文件用了哪哪就是clean状态其他地方是Nonresident状态
简述内存分区情况
  • 代码区:存放函数二进制代码
  • 数据区:系统运行时申请内存并初始化,系统退出时由系统释放,存放全局变量、静态变量、常量
  • 堆区:通过malloc函数或new函数等操作符操作的得到,需要程序员自己管理
  • 栈区:函数模块内申请,函数结束时自动释放,存放局部变量,函数变量

你可能感兴趣的:(12、iOS系统内存机制)