MacBook 关闭虚拟内存(交换内存 SwapMemory)


由于 MacBook 激进的 SWAP 策略 和 unix 特有的内存管理模式,导致 MacBook 在轻量使用情况下仍然占用大量内存,且会对 SSD 进行 SWAP 过量擦写硬盘,在高强度使用时,SWAP 擦写更频繁,导致电脑 SSD 寿命大幅下降

为什么建议关闭?

听说M1有SSD磨损的问题。

我在了解之后,就把虚拟内存关掉了。但在我关闭后,打开电脑奇怪的发现虚拟内存还在使用,并且还是一直保持2GB左右,半个月不到就2TB了,我表示很慌。在第二天我打开电脑准备工作时,习惯性打开活动监视器(command + 空格),发现已使用的交换内存为0字节,我特别高兴。

但在我打开3个idea窗口时,分别运行了1个Springboot的项目和2个node项目时,习惯性查看活动监视器,发现又上升到了2GB,也就是说,关闭虚拟内存和启动虚拟内存是不一样的效果。

1.启动虚拟内存(默认):不管怎么样都会使用虚拟内存,除非你的内存特别大,目的是为了防止在突然打开一个超大的文件时,导致需要重新处理内存与虚拟内存。所以默认使用虚拟内存,尽量让出大部分物理内存。

2.关闭虚拟内存(需要手动):默认不使用虚拟内存,但经过我观察,似乎是超过预警阈值(内存GB-2GB的样子)就会开始使用虚拟内存,我猜测目的是为了系统的稳定性

也就是说,即使关闭了虚拟内存,也不会影响系统稳定性,因为超过阈值又会继续使用虚拟内存但关闭后就可以在没必要的情况下使用虚拟内存。其实效果也不是很好,因为我打开电脑一定就是打开idea搞开发,所以每天都还是会使用大量虚拟内存。

如何关闭虚拟内存

为缓解 MacBook 激进的 SWAP 策略,在内存有余量的情况下,可以关闭虚拟内存,不对 SSD 进行硬盘的 SWAP ,以延长电脑使用寿命,具体操作如下:

  1. 关闭系统完整性保护机制
  2. 关闭虚拟内存

关闭系统完整性保护机制

首先关闭系统完整性保护需要进入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,内存一大半没用就被使用了虚拟内存,你就可以关闭掉虚拟内存。


文章作者: Tiancy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Tiancy !
评论
  目录