如何解决 Vmmem 占用巨量内存

如何解决 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

  1. 关掉所有的 Hyper-V 虚拟机。在 Hyper-V 管理器中,依次进入每一个正在运行或处于保存状态的虚拟机,执行关机操作。

    关掉所有的 Hyper-V 虚拟机

  2. 卸载 WSL2。首先,在“Windows设置”→“应用”→“应用与功能”中卸载 Ubuntu (如果你安装了其他的发行版本,例如 Kali,就要根据其名称找到它然后删除)。然后,在“控制面板”→“程序和功能”→“启用或关闭 Windows 功能”中卸载“适用于 Linux 的 Windows 子系统”。

    卸载 Ubuntu

    卸载 WSL2

  3. 关闭 WSA 并禁止其自动启动。进入 WSA 设置,把“子系统资源”设为“按需要”,然后点击“关闭”,最后在“任务管理器”→“启动”中把 Windows Subsystem for Android 设置为“禁用”。

    关闭 WSA

    禁止 WSA 其自动启动

这样,任务管理器中的 Vmmem 就消失了。而且也不影响我下次用 WSA。

至于 WSL2 嘛,我决定还是在 Hyper-V 虚拟机里安装 Ubuntu,不用 WSL2 了。主要原因是我一不做开发,二不做运维,不需要保持 Linux 一直运行在后台,但是 WSL2 就是一直运行在后台的。虽说可以在命令行中用 wsl --shutdown 关闭,但是每次开机都要关闭一次,我嫌麻烦。

图片版权

题图: "Memory chips" by sebleedelisle is licensed under CC BY 2.0 .

头图:该图片由 Pete LinforthPixabay 上发布


求扫码打赏
“我这么可爱,请给我钱 o(*^ω^*)o”

如何解决 Vmmem 占用巨量内存
https://blog.kukmoon.com/a05750d42306/
作者
Kukmoon谷月
发布于
2023年12月6日
许可协议