Windows 11中关闭WSL2/WSLG/VSCode后vmmem未自动关闭求助
解决WSL关闭终端/VSCode后vmmem进程持续占用内存的自动关闭方法
问题背景
我一直在VSCode中使用WSL,近期发现关闭VSCode或单个WSL终端后,vmmem进程仍持续占用大量内存。已知可通过CMD或PowerShell执行wsl --shutdown手动关闭该进程,但希望找到关闭WSL终端或VSCode时自动关闭vmmem的方法。该问题此前未出现,推测由Windows更新导致,已尝试更新WSL及Windows版本,但未找到有效解决方案。
当前WSL版本信息:
Version WSL : 0.70.4.0 Version du noyau : 5.15.68.1 Version WSLg : 1.0.45 Version MSRDC : 1.2.3575 Version direct3D : 1.606.4 Version de DXCore : 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp version Windows : 10.0.22000.1098
解决方案
方法1:配置WSL自动终止闲置实例
WSL支持设置自动关闭闲置的分发版,通过修改全局配置实现:
- 在Windows用户目录(
C:\Users\<你的用户名>)下创建或编辑.wslconfig文件 - 添加以下配置:
[wsl2] # 设置闲置10分钟(600000毫秒)后自动关闭分发版 memoryIdleTimeout=600000
- 保存文件后执行
wsl --shutdown生效,后续闲置的WSL实例会在指定时间后自动关闭,释放vmmem占用的内存。
方法2:给VSCode添加关闭时自动终止WSL的任务
利用VSCode的任务功能,在关闭工作区窗口时触发WSL shutdown:
- 打开VSCode,按
Ctrl+Shift+B打开任务面板,选择「创建tasks.json文件」→「Others」模板 - 替换tasks.json内容为:
{ "version": "2.0.0", "tasks": [ { "label": "Shutdown WSL on VSCode Close", "type": "shell", "command": "wsl --shutdown", "runOptions": { "runOn": "folderClose" }, "problemMatcher": [] } ] }
- 保存后,每次关闭VSCode的WSL工作区窗口时,会自动执行
wsl --shutdown关闭所有WSL实例。
方法3:给WSL终端配置退出时自动关闭实例
以Windows Terminal为例,配置终端退出时触发WSL关闭命令:
- 打开Windows Terminal设置,找到目标WSL分发版的配置项
- 将「命令行」修改为:
wsl.exe -d <你的分发版名称> --exec bash -c "exec bash; wsl --shutdown"
替换<你的分发版名称>为实际名称(如Ubuntu-20.04),退出终端bash会话时会自动触发wsl --shutdown。
方法4:手动终止单个WSL分发版(不影响其他实例)
如果不想关闭所有WSL实例,可针对单个分发版执行:
wsl -t <分发版名称>
例如wsl -t Ubuntu-20.04,仅终止指定实例并释放对应内存。
内容的提问来源于stack exchange,提问作者Telli
相关产品推荐
相关产品推荐

