Stopping Vmmem from using RAM

Jac*_*ack 4 windows docker

I am using Docker to run some containers on Windows 10, and when I was done I noticed an application named vmmem was using almost all of my ram: ~12GB. According to this it is because of Docker and it said if I closed all docker images and containers it would stop. So I stopped and removed all Docker containers and images by the following batch file:

@echo off
FOR /f "tokens=*" %%i IN ('docker ps -aq') DO docker rm %%i
FOR /f "tokens=*" %%i IN ('docker images --format "{{.ID}}"') DO docker rmi %%i
Run Code Online (Sandbox Code Playgroud)

from: https://gist.github.com/daredude/045910c5a715c02a3d06362830d045b6

so when you type docker container ls -a & docker image ls -a they both show nothing. However in Task Manager I still see vmmem using about 4 GB of RAM. What else can I do to stop this? Thanks.

Col*_*ode 76

创建一个%UserProfile%\.wslconfig文件,并添加以下配置:

[wsl2]
memory=6GB # How much memory to assign to the WSL2 VM.
processors=5 # How many processors to assign to the WSL2 VM.
Run Code Online (Sandbox Code Playgroud)

注意:默认情况下,内存为 Windows 上总内存的 50% 或 8GB(以较小者为准),处理器为可用总数。

然后通过在 PowerShell 中运行以下命令(以管理员身份运行)重新启动 WSL2:

Restart-Service LxssManager
Run Code Online (Sandbox Code Playgroud)

来源: https: //learn.microsoft.com/windows/wsl/release-notes#build-18945https://learn.microsoft.com/windows/wsl/wsl-config#configuration-setting-for-wslconfig

  • 对我来说, wsl --shutdown 然后 Restart-Service LxssManager 使 vmmem 进程退出并返回分配的内存。这个答案确实应该被标记为这个问题的答案。 (9认同)
  • 这限制了内存和处理器的数量,但这并不能解决我在不使用它们时完全停止它们的问题。 (3认同)

小智 27

查看 WSL 上所有正在运行的发行版

wsl -l -v
Run Code Online (Sandbox Code Playgroud)

终止正在使用的

wsl -t {insert distro} 
Run Code Online (Sandbox Code Playgroud)

更多信息请参见 https://blog.simonpeterdebbarma.com/2020-04-memory-and-wsl/

  • 这很有效,尽管我不得不多次关闭发行版,直到内存使用量最终从 11GB 降到零。这也是一个逐渐释放记忆的过程,大约需要一分钟的时间才能完全泄气。 (2认同)

aje*_*eet 15

关闭 Vmmem 并避免重新启动计算机的最简单方法是,以管理员身份在 CMD 或 PowerShell 中运行以下命令:

taskkill /F /IM wslservice.exe
Run Code Online (Sandbox Code Playgroud)


Jac*_*ack 9

我发现关闭 Vmmem 的最简单和最简单的方法是进入 Windows powershell 并输入:cmd wsl --shutdown. 这将关闭它。

  • 同样,单独使用 wsl --shutdown 并不能解决问题。它肯定会释放一些内存,但实际的解决方案是创建 .wslconfig 并重新启动服务,如 collage-code 的响应中所述。 (6认同)
  • 实际上这是唯一的答案,即使终止所有发行版也不会释放 RAM :| 他们说 Linux 是轻量级的。也许微软是故意保留这么多内存的。因为Linux实际上是轻量级的 (5认同)
  • 无需在 PowerShell 或 cmd 中添加 `cmd` 只需 `wsl --shutdown`。 (4认同)
  • 我尝试过这个命令一次,它永远挂起。我能弄清楚如何解决该问题的唯一方法是重新启动整个计算机,然后运行它。 (2认同)

Ali*_*nka 8

试试这个方法

  1. 打开开始菜单 -> 只需键入即可找到“Hyper-V Manager”
  2. 停止虚拟机->右键->关闭(看图)

在此输入图像描述