最基本的答案?否。操作系统为用户处理内存管理-为进程提供所需数量的内存,并且无法修改系统的性能。试图弄清楚内存利用率是否是Linux服务器为什么胜过Mac服务器的方程式,这并没有多大帮助。
由于虚拟内存系统缺乏“可破解性”,因此最好的选择是评估虚拟内存的性能,以查看它是否确实是造成性能问题的原因-最基本的方法是使用vm_stat
或遵循它通过vm_stat [number of seconds]
查看发生了多少次页面输出来进行实时显示。将未使用的页面从RAM移至硬盘驱动器的成本要比将页面从硬盘驱动器取回RAM的成本低得多。用OS X术语表示的页面是指4kb的数据。
此外,32位进程(例如Illustrator)不能访问超过4GB的空间,因此从理论上讲,如果安装了6GB的空间,则有2GB的空间可用,并且进程内存不足。
在台式机和服务器上,我都将运行vm_stat 2
并检查最后一列-尤其是当您切换到Illustrator时遇到数秒的延迟时。
要查明交换的实际大小,您可以在“活动监视器”中检查交换大小或运行du -shc /var/vm/swap* | tail -n 1
。
使用du -sh /var/vm
有一个警告:在具有休眠模式(过去4年或更晚的版本)的笔记本电脑上,sleepimage
安装的内存大小可能大致相同。
Mac OS X内存行话:
有线的:这是指内核代码等。永远不应移出RAM的内存。也称为常驻内存。
共享:两个或多个进程之间共享的内存。这两个进程都将显示此内存量,因此在实际使用多少内存方面可能会产生误导。
实际:这是task_info()报告的应用程序的“实际”内存使用情况-当前进程具有的物理页数的粗略计数。(大小)
专用:这是进程在驻留内存中单独使用的唯一内存。(RPRVT)
虚拟:映射到任何内容的进程中的地址空间总量(无论该空间是变量的任意大空间还是其他任何内容),都不等于虚拟机的实际使用。(大小)
活动的:当前标记为活动的内存,并且已使用RAM。
不活动:“不活动的内存将不再使用,并已缓存到磁盘。它将保留在RAM中,直到另一个应用程序需要空间为止。如果您(或计算机的客户端)回来,则将这些信息保留在RAM中对您有利。以后再说。” -Mac OS X帮助
免费:内存实际可用的,没有任何的数据量。
我所知道的(并且能够在后续研究中找到的)最好的文档是Apple 在其开发人员网站上自己的《Managing Memory》文章。
其他有价值的资源:Darwin-dev邮件列表:[ 1 ],[ 2 ]和有关MacOSXHints的旧文章。此外,迈克·阿什(Mike Ash)在他的博客上发布了不错的外行介绍
可能(我还没有尝试过)通过运行sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
然后重新启动来禁用虚拟内存系统,以使dynamic_pager(实际上进行虚拟内存分配的程序)不会启动。但是,由于操作系统假定它具有虚拟内存,因此您可能会非常非常快地遇到问题。加载它备份运行sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
(如果需要从单用户模式)