我在 OS X 的日常使用中(以及根据互联网上的各种帖子显示的其他几种情况)中的一个常见现象,只要没有更多“可用”内存可用,系统似乎就会变慢。据称,这是由于交换造成的,因为明显的磁盘活动很重,并且 vm_stat 报告了许多页面输出。(纠正我的错误)
但是,当交换开始/发生/结束时,“非活动”内存的数量通常约为所有可用内存 (^1.) 的 12.5%-25%。
根据http://support.apple.com/kb/ht1342:
非活动内存
内存中的这些信息没有被积极使用,但最近被使用过。
例如,如果您一直在使用 Mail 然后退出它,Mail 使用的 RAM 将被标记为非活动内存。此非活动内存可供其他应用程序使用,就像空闲内存一样。但是,如果在其他应用程序使用其非活动内存之前打开 Mail,Mail 将打开得更快,因为它的非活动内存被转换为活动内存,而不是从较慢的硬盘加载邮件。
非活动列表包含当前驻留在物理内存中但最近未被访问的页面。这些页面包含有效数据,但可能随时从内存中释放。
所以,基本上:当一个程序退出时,它的内存被标记为 Inactive 并且应该可以随时声明。尽管如此,每当“可用”内存变低时,OS X 更愿意开始将内存换出到交换文件,而不是仅仅声明这块内存。
为什么?这种行为比立即释放非活动内存甚至不触及交换文件的优势是什么?一些消息来源 (^2.) 表明 OS X 会在释放“非活动”内存之前将其分页以进行交换,但是如果内存可能随时从内存中释放,现在这样做没有意义吗?交换很贵,释放很便宜,对吧?
可以使用某些偏好或已知的 hack 来改变这种行为吗?(最好是不包括完全禁用 swap/dynamic_pager 和重新启动...)
我很欣赏清除命令,以及修复磁盘权限以强制释放一些可用内存的概念,但这些是痛苦地强制更多可用内存而不是实际修复交换/释放决策逻辑的方法......
顺便说一句类似的问题在这里问:http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/这里:HTTP://hintsforums.macworld .com/showthread.php?t=87688但即使 OP 重新询问了核心问题,但没有任何回复给出了答案......
^1。2012 年 3 月 17 日更新自从我第一次发布这个问题以来,我已经从 4gb 到 8gb 的已安装内存,问题仍然存在。“非活动” ram 的数量以前是 0.5gb-1.0gb,现在在交换开始/发生/结束时通常约为 1.0-2.0GB,即似乎大约 12.5%-25% 的 ram 被 osx 保留为非活动状态内核逻辑。 …
我的 mac 偶尔会死机,大多数情况下我只是通过按住电源按钮 5 秒以上来重新启动它。
然而今天,当 UI 完全冻结时,我已经运行了 14 个小时的大型文件扫描,我不想再等 14 个小时!
冻结用户界面的症状: 使用键盘时没有任何反应(大写锁定灯打开/关闭除外)。自然,强制退出不会出现。移动鼠标会移动屏幕上的光标,但单击什么也不做。
使用网络上的另一台 Mac,我可以通过 SSH 访问该 mac。我看到 RAM 几乎已满,但 CPU 活动不大。我试图解冻 Mac 的事情:
关闭/杀死 Chrome、iMovie、Photoshop 和其他我不关心关闭的应用程序。确实帮助降低了 RAM 使用率,但没有帮助解冻 Mac。
关闭 Finder 和 Dock 进程。没有帮助。
从命令行激活屏幕共享并尝试远程连接。密码对话框出现(表明屏幕共享确实已激活)但在提供密码后,进度指示器只是永久旋转,没有任何反应。
尝试从命令行挂起用户会话:
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
这个命令只是挂在 SSH 会话中,什么也没有发生。需要使用ctrl+中止c。使用sudo
使命令立即返回,没有任何影响。
甚至杀死 WindowServer ( sudo killall -HUP WindowServer
) 也没有帮助,运行正常重启 ( sudo shutdown -r now
) 只会使计算机完全冻结(不再有光标移动或 ssh 访问)。只有电源按钮强制关闭有效。
必须再等 14 小时才能再次运行文件扫描。有没有其他方法可以在这种状态下解冻 Mac?很高兴知道以供将来参考......