谢邀。
关于 iOS 的虚拟内存,最准确的信息是看官方文档:Memory Usage Performance Guidelines: About the Virtual Memory System
。
简单来说,OS X 和 iOS 都有虚拟内存系统,但这里的虚拟内存和 Windows 中的虚拟内存是不一样的。
前者是指将物理内存地址,针对每个进程,映射到不同的虚拟内存地址上。iphone虚拟内存。于是在一个物理并不够大的设备上,32 位的进程也能使用 4 GB 的虚拟内存地址,64 位的进程能使用 18 EB 的虚拟内存地址。但在同一时间真正能使用内存量,仍然是设备的物理内存大小,虚拟内存并不会改变这个物理限制。它的作用就不详述了,感兴趣的可以去学计算机原理和操作系统,大概是大三的课程。
而后者指的是交换文件,即当进程使用的内存超过物理内存大小时,操作系统会将一部分暂时用不到的内存写入磁盘的交换文件,以腾出空间;当需要用到时,又会将交换文件中所需的部分读取到物理内存中。
OS X 是可以使用交换文件的,而 iOS 不行。
这是我在一台越狱的 iPhone 4 (iOS 6) 上执行的结果:
# sysctl vm.swapusage
vm.swapusage: total = 0.00M used = 0.00M free = 0.00M
# top
Processes: 53 total, 2 running, 51 sleeping... 303 threads
Load Avg: 0.15, 0.15, 0.17 CPU usage: 20.39% user, 0.00% sys, 79.61% idle
SharedLibs: num = 0, resident = 0 code, 0 data, 0 linkedit.
MemRegions: num = 0, resident = 0 + 0 private, 0 shared.
PhysMem: 67M wired, 53M active, 21M inactive, 414M used, 91M free.
VM: 16G + 0 384212(0) pageins, 3575(0) pageouts
第 2 行表明 iOS 6 是没有使用交换文件的,最后一行表明目前所有进程的虚拟内存大小总量是 16 GB。安卓9内存管理机制、
综上可以说明,iOS 系统是不使用交换文件的,也就谈不上对用户体验的作用。而虚拟内存只是操作系统管理内存的一种方式,也没有什么直接的影响(除了可以使用一些不连续的内存碎片等)。
最后我想说的是,苹果并没有什么黑科技能突破物理限制,至少从开放的源码中(Darwin)是看不出的。
iPhone 4S 相比 iPhone 4 多了一个核,所以在多线程下载时,对主线程的影响明显小了很多。
iPhone 5 相比 iPhone 4S 多了 512 MB 物理内存,所以在 iOS 7 上就流畅了很多。
更实际的体验是,iPhone 4 在使用 iOS 6 时,就已经很卡了,切应用时经常退出。内存管理。