为什么建议关闭?
我是买的丐版Mac M1 8+256的。前几天听说M1有SSD磨损的问题。并且这个话题持续发酵。
我在了解之后,就把虚拟内存关掉了。但在我关闭后,打开电脑奇怪的发现虚拟内存还在使用,并且还是一直保持2GB左右,半个月不到就2TB了,我表示很慌。在第二天我打开电脑准备工作时,习惯性打开活动监视器(command + 空格),发现已使用的交换内存为0字节,我特别高兴。
但在我打开3个idea窗口时,分别运行了1个Springboot的项目和2个node项目时,习惯性查看活动监视器,发现又上升到了2GB,也就是说,关闭虚拟内存和启动虚拟内存是不一样的效果。
1.启动虚拟内存(默认):不管怎么样都会使用虚拟内存,除非你的内存特别大,目的是为了防止在突然打开一个超大的文件时,导致需要重新处理内存与虚拟内存。所以默认使用虚拟内存,尽量让出大部分物理内存。
2.关闭虚拟内存(需要手动):默认不使用虚拟内存,但经过我观察,似乎是超过预警阀值(内存GB-2GB的样子)就会开始使用虚拟内存,我猜测目的是为了系统的稳定性
也就是说,即使关闭了虚拟内存,也不会影响系统稳定性,因为超过预警阀值又会继续使用虚拟内存。但关闭后就可以在没必要的情况下使用虚拟内存。其实效果也不是很好,因为我打开电脑一定就是打开idea搞开发,所以每天都还是会使用大量虚拟内存。
Mac M1如何关闭虚拟内存?
- 关闭系统完整性保护机制
- 关闭虚拟内存
首先关闭系统完整性保护需要进入recovery OS,Mac M1进入模式好像不太一样。就在电脑完全关机的情况下,一直按着电源键不放,提示你继续按着电源键就可以进入,然后直到提示你正在进入恢复模式就可以放手了。
选择用户输入密码后,左上角有一排的菜单,找到终端打开他,输入:
csrutil disable
我记得好像会提示什么权限转移吧,反正yes就可以了。
重启电脑后打开终端,输入:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
然后就关闭了,使用这个指令可以查看虚拟内存使用情况:
sysctl vm.swapusage
到了这里你就关闭了虚拟内存,但注意,你之前关闭了系统完整性保护,我建议你重新开启,以免不必要的问题,重新进入recovery OS恢复模式,在终端输入:
csrutil enable
就可以了。
关闭虚拟内存不排除是否有风险,如果你每天都是负载使用MAC,关不关都无所谓的。如果你只是简单使用MAC,内存一大半没用就被使用了虚拟内存,你就可以关闭掉虚拟内存。