mac中为什么虚拟内存那么大

2025-04-17 17:01:53
推荐回答(1个)
回答1:

OS X 系统采用了 Unified Buffer Cache,空闲内存会被用来加速文件访问,也就是你看到的蓝色非活跃部分。正常情况下,如果有程序需要更多内存时,系统会从非活跃的部分释放空间出来。所以实际上蓝色部分是可以用的。

内存是宝贵的系统资源,闲置【绿色部分】是浪费。让系统去管理就好了,不用操心。如果你实在想干涉系统的正常运作,可以打开终端输入 purge 命令然后回车,蓝色部分会显著降低,但代价是你之后首次启动程序、打开文件的延迟会显著上升。之后系统又会根据你的访问频次把这些文件缓冲在内存里面,然后蓝色部分又会增加。

OS X 的早期版本的 UBC 管理策略不是很好,在个别情况下会造成 thrashing 从而严重影响系统响应速度。遇到这种情况,最简单彻底的解决方法是重新登录系统或者重启。感觉从 10.6 开始这个问题已经得到了极大的解决,几乎再也没遇到过由于 UBC 导致的无响应了。

---- 以下内容仅对 OS X 应用开发者有意义,用户请忽略 ----

如果你的程序需要访问大量文件但只需要一次性顺序访问不需要重复随机访问,比如复制文件这种应用,可以考虑用 fcntl 系统调用关闭文件缓冲,减少不必要的 thrashing