WWDC - iOS内存性能及原理 笔记

iOS内存的基本原理

内存是如何初始化和被管理的?

  • 在iOS内,指针的地址范围很大, 32位CPU上有 4GB 大小, 64位CPU上有 18EB 大小 (大约有2的60次方), 这么大的指针地址范围会致使我们看来系统内存有这么大,实际上物理内存可能没有这么大,这个大小被称为虚拟内存, 在OS X 中系统使用硬盘来存储内存中不经常使用的数据来作为内存的后备存储, 在内存中存有硬盘数据的指针地址, 需要的事后才写入内存.

  • 然而, 在iOS中没有后备存储, iOS中只读类型的数据已经存在硬盘上, 在需要时写入内存使用, 可读写数据是常驻内存的,不会移除, 一旦可使用内存达到临界值, 系统会发出内存不够用的警告,由应用程序主动释放资源,若释放失败或没有排除警告,会直接被系统终结程序.

  • 虚拟内存
    iOS的物理内存被分割成大小为 4KB 的页, 而且不是所有的页都能被应用访问到. 虚拟内存是在kernel和应用层之间的一层,由于当我们每次需要内存的时候都直接调用kernel去申请内存的过程的代价是很大的, 所以底层会直接与虚拟内存申请空间, 虚拟内存会与kernel通信, 创建 VM Object来匹配物理内存,如图:

    在内存的堆中, 我们应用的数据只占一部分, 其他还有framework创建的对象和缓存, 内存中还有一些静态常量, 线程的堆栈, 图片数据, CALayer的缓存, 数据库的缓存

内存类型: 干净内存和脏内存

干净内存: 从磁盘上拷贝到内存中的空间, 比如, 代码, framework,内存映射文件.
脏内存: 其他的内存空间. 比如 在堆上的初始化数据, 数据库缓存,解压的图片数据等.
大部分应用初始化的数据都是脏内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值