当我运行htop(在OS X 10.6.8),我看到这样的东西:
1 [||||||| 20.0%]任务:总共70个,0个正在运行
2 [||| 7.2%]平均负载:1.11 0.79 0.64
3 [| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 [|| 5.8%]
MEM [||||||||||||||||||||| 3872 / 4096MB]
Swp [0 / 0MB]
PID USER PRI NI VIRT RES SHR S CPU%MEM%TIME +命令
284 501 57 0 15.3G 1064M 0 S 0.0 6.5 0:01.26 /Applications/Firefox.app/Contents/MacOS/firefox -psn_0_90134
437 501 57 0 14.8G 785M 0 S 0.0 4.8 0:00.18 /Applications/Thunderbird.app/Contents/MacOS/thunderbird -psn_0_114716
428 501 63 0 12.8G 351M 0 S 1.0 2.1 0:00.51 /Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/
696 501 63 0 11.7G 175M 0 S 0.0 1.1 0:00.02 /系统/资料库/框架/快速查看框架/资源/快速浏览.app /打印
38 0 33 0 11.1 G 422M 0 S 0.0 2.6 0:00.59 /系统/库/框架/核心服务框架/框架/元数据框架
183 501 48 0 10.9G 137M 0 S 0.0 0.8 0:00.03 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder
我怎样才能使用千兆字节的VIRT内存进程,仍然使用0MB的交换?
VIRT与已经使用的内存(虚拟或其他)没有任何关系,但与已使用的地址空间相关 ,这与您可能认为的不相关。
现代操作系统(包括OSX)具有称为按需分页(paging paging )的特征,通过告诉操作系统将虚拟地址空间的特定区域映射到文件(诸如共享库/ DLL)来工作。 只有当一个程序试图读取文件被加载到内存中的虚拟地址。
如果这些共享库实际上是共享的,那么操作系统实际上将跨多个进程共享物理内存; 也就是说,数十GB的大部分不仅是文件支持的库,而且是相同的文件支持的库。
此外,如果需要暂存内存(对于数据;设置,位图,声音等),并且没有任何物理页面未被使用,则操作系统实际上将丢弃这些由文件支持的区域的内容并将它们提供给您的应用程序。 如果再次需要这些页面,操作系统可以简单地从磁盘重新加载它们。
交换( SWP )是该临时内存的特殊文件支持区域。 创build交换空间将允许操作系统将该暂存内存移动到磁盘而不是(用于更多正在运行的进程)共享库,通常会提高性能,而且可能最令人惊讶的是,交换空间比根本没有交换空间。
你还有记忆。 系统并没有交换出去,因为它还不需要…但是我又注意到一些奇怪的东西 – 从我所知道的情况来看,你没有设置交换空间。 在我读的(linux)系统之一
CPU[
|| 63.2%] Tasks: 89, 114 thr; 1 running Mem[
|| 167/1001MB] Load average: 0.19 1.13 0.75 Swp[ 0/1021MB] Uptime: 00:06:54
例如。
我不知道这是OS X的怪癖还是其他一些问题 – 你可能想用活动监视器来检查