Mac系统对内存的使用上相当不友好,具体的表现就是,不管你内存有多大,它都能用完,而且还不释放,不释放的结果就是,内存用完后就开始使用交换分区,不释放非活跃内存,尽管非活跃内存占用50%之多,这个简直是太糟糕了,解决的方法,也行就是关闭交换功能,具体的命令如下。

关闭交换分区

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

如果上面提示权限不足,那么可以先关闭Mac系统完整性保护,操作方法见《如何禁用 Mac OS X 的系统完整性保护》。另外就算完整性保护已关闭也需要重启系统才可以删除上面的交换分区文件的。

重新启用交换分区

sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

查看交换分区使用情况

sysctl vm.swapusage

在关闭了交换分区后你会发现依然会有虚拟内存的使用,我猜测是当你关闭后Mac会在特殊的情况下使用交换分区,例如系统内存超过一定阀值。

关闭系统的Spotlight的方法

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.metadata.mds.plist