美文网首页iOS技术帖
关于iOS内存优化--虚拟内存概览

关于iOS内存优化--虚拟内存概览

作者: 梦里落花Daniel | 来源:发表于2016-05-31 09:47 被阅读608次

虚拟内存允许操作系统避开物理RAM的限制。虚拟内存管理器为每个进程创建一个逻辑地址空间(或者虚拟地址空间)并且将它分配为相同大小的内存块(可称为页)。处理器与内存管理器单元(MMU)维持一个页表来映射程序逻辑地址空间到计算机RAM的硬件地址。当程序的代码访问内存中的一个地址时,MMU利用页表将指定的逻辑地址转换为真实的硬件内存地址。这种转换自动发生并且对于运行的应用是透明的。

就程序而言,在它逻辑地址空间的地址永远可用。然而,当应用访问一个当前并没有在物理RAM中的内存页的地址时,就会发生页错误。当这种情况发生时,虚拟内存系统调用一个专用的页错误处理器来立即响应错误。页错误处理器停止当前执行的代码,定位到物理内存的一个空闲页,从磁盘加载包含必要数据的页,更新页表,之后返回对程序代码的控制,程序代码就可以正常访问内存地址了。这个过程被称为分页。

如果在物理内存中没有空闲页,页错误处理器必须首先释放一个已经存在的页从而为新页提供空间。由系统平台决定系统如何释放页。在OS X,虚拟内存系统常常将页写入备份存储。备份存储是一个基于磁盘的仓库,包含了给定进程内存页的拷贝。将数据从物理内存移到备份存储被称为页面换出;将数据从备份存储移到物理内存被称为页面换入。在iOS,没有备份存储,所以页面永远不会换出到磁盘,但是只读页仍可以根据需要从磁盘换入。

在OS X and iOS中,页大小为4kb。因此,每次页错误发生时,系统会从磁盘读取4kb。当系统花费过度的时间处理页错误并且读写页,而并不是执行代码时,会发生磁盘震荡(disk thrashing)。

无论页换出/换入,磁盘震荡会降低性能。因为它强迫系统花费大量时间进行磁盘的读写。从备份存储读取页花费相当长的时间,并且比直接从RAM读取要慢很多。如果系统从磁盘读取另一个页之前,不得不将一个页写入磁盘时,性能影响会更糟。

相关文章

  • 关于iOS内存优化--虚拟内存概览

    虚拟内存允许操作系统避开物理RAM的限制。虚拟内存管理器为每个进程创建一个逻辑地址空间(或者虚拟地址空间)并且将它...

  • iOS内存管理及优化

    iOS内存管理的基本介绍: 1.iOS使用的是虚拟内存:段式虚拟内存+页式虚拟内存。 2.iOS没有Swap机制,...

  • 2019-03-01

    虚拟内存 物理内存 先弄清楚这里的学问,再来谈 iOS 内存管理与优化 先弄清楚这里的学问,再来谈 iOS 内存管...

  • 关于iOS内存优化--初识虚拟内存

    有效的内存管理对性能非常重要。减少内存使用不仅可以降低内存空间,同时减少CPU时间。为了正确的优化代码,你需要理解...

  • 【iOS】虚拟内存与物理内存

    【iOS】虚拟内存与物理内存

  • iOS性能优化

    iOS-Performance-Optimization 关于iOS 性能优化梳理: 基本工具、业务优化、内存优化...

  • iOS性能优化

    iOS-Performance-Optimization 关于iOS 性能优化梳理: 基本工具、业务优化、内存优化...

  • iOS必读 - 收藏集 - 掘金

    iOS 性能优化总结 - iOS - 掘金关于iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局...

  • IOS的性能优化包括哪几点

    iOS性能优化总结 iOS性能优化总结。关于 iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局...

  • 电脑入门必懂的常识(一)

    细说Windows XP虚拟内存优化 虚拟内存在Windows XP中是非常不起眼的,Windows XP安装时...

网友评论

    本文标题:关于iOS内存优化--虚拟内存概览

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