有效的内存管理对性能非常重要。减少内存使用不仅可以降低内存空间,同时减少CPU时间。为了正确的优化代码,你需要理解底层系统如何管理内存。
OS X and iOS平台包涵了全集成,始终开启的虚拟内存系统。Both systems also provide up to 4 gigabytes of addressable space per 32-bit process. In addition, OS X provides approximately 18 exabytes of addressable space for 64-bit processes。即使拥有4G或者更多的RAM的计算机,系统也很少将这些RAM分配给一个独立的进程。
为了进程可以访问它们完整的4 gigabyte or 18 exabyte 地址空间,OS X 利用硬盘保存当前未使用的数据。当内存将用完时,需要将目前不使用的内存写入到磁盘,用来给新的数据提供空间。存储未使用数据的磁盘部分被称为backing store,因为它为主存提供了backup storage。
尽管OS X 提供了backing store,但是iOS没有。在iPhone应用中,那些已经在磁盘的只读数据(例如code pages)就会简单地从内存移除并且在需要的时候重新加载。可写数据由操作系统管理,永远不会从内存移除。相反,如果空闲内存数量降低到了下限,系统要求应用自愿地释放内存,用来为新数据提供空间。没有释放足够内存的应用会终止运行。
注意:不像大多数的UNIX-based的操作系统,OS X并不是采用预分配磁盘分区的方案来生成backing store。相反,它使用在机器的启动分区的所有可用空间。
网友评论