如何解决 Vmmem 占用巨量内存
Vmmem 在我电脑上最多能吃到 8 GB 的内存,占了内存的三分之一(我电脑有 24 GB 内存,是一根 16 GB 和一根 8 GB 的内存条)。只要有 Vemem 在,其他内存密集型的应用程序(例如 Photoshop、Firefox、用 Python 编写的 AI 类应用程序)就会报错、强退。甚至由于 Vmmem 和内存密集型的应用程序狂吃内存,以致于挤占了分配给集显的内存,因此会黑屏……
Vmmem 是一个虚拟的进程,它描述了所有正在运行的 Hyper-V 虚拟机(包括自建的虚拟机、WSL2、WSA)占用了多少 CPU 和多少内存。既然 Vmmem 吃内存,就需要关掉相关的 Hyper-V 虚拟机以减少内存占用。
我用以下方法把 Vmmem 占用的内存减少到了 0。
-
关掉所有的 Hyper-V 虚拟机。在 Hyper-V 管理器中,依次进入每一个正在运行或处于保存状态的虚拟机,执行关机操作。
-
卸载 WSL2。首先,在“Windows设置”→“应用”→“应用与功能”中卸载 Ubuntu (如果你安装了其他的发行版本,例如 Kali,就要根据其名称找到它然后删除)。然后,在“控制面板”→“程序和功能”→“启用或关闭 Windows 功能”中卸载“适用于 Linux 的 Windows 子系统”。
-
关闭 WSA 并禁止其自动启动。进入 WSA 设置,把“子系统资源”设为“按需要”,然后点击“关闭”,最后在“任务管理器”→“启动”中把 Windows Subsystem for Android 设置为“禁用”。
这样,任务管理器中的 Vmmem 就消失了。而且也不影响我下次用 WSA。
至于 WSL2 嘛,我决定还是在 Hyper-V 虚拟机里安装 Ubuntu,不用 WSL2 了。主要原因是我一不做开发,二不做运维,不需要保持 Linux 一直运行在后台,但是 WSL2 就是一直运行在后台的。虽说可以在命令行中用 wsl --shutdown
关闭,但是每次开机都要关闭一次,我嫌麻烦。
图片版权
题图: "Memory chips" by sebleedelisle is licensed under CC BY 2.0 .
头图:该图片由 Pete Linforth 在 Pixabay 上发布
![](/img/zhi-fu-bao-shou-kuan-ma.png)
![](/img/wei-xin-zan-shang-ma.png)