wsl2 默认内存占用失控,需通过 .wslconfig 限制:在用户目录创建该文件,配置 memory=2gb、swap=1gb,再执行 wsl --shutdown 并重启发行版,free -h 可验证生效。

Windows 10 上 WSL2 默认会动态占用主机内存,空闲时不释放、负载高时猛吃,导致笔记本风扇狂转、系统卡顿甚至假死——尤其当你同时开着 Docker Desktop、Chrome 和几个 IDE 时,vmmem 进程轻松占满 4GB 以上还拒不归还。
创建 .wslconfig 文件强制约束内存与交换空间
在当前 Windows 用户目录(C:\Users\你的用户名)下,新建一个纯文本文件,命名为 .wslconfig(注意开头是英文点号,无后缀)。
用记事本或 VS Code 打开它,粘贴以下内容并保存:
[wsl2]
memory=2GB
swap=1GB
localhostForwarding=true
这个配置将 WSL2 实例的物理内存上限设为 2GB,交换空间(swap)限制为 1GB。swap 不是越大越好——过大的 swap 会让 WSL2 在内存紧张时疯狂换页,反而拖慢响应速度;设为 1GB 是兼顾突发负载与稳定性经验阈值。
重启 WSL2 生效配置
以管理员身份打开 PowerShell,依次执行:
wsl --shutdown → 这一步必须做,否则新配置不加载。
wsl -d Ubuntu-22.04 → 用你实际安装的发行版名称替换(如 Debian、KaliLinux),启动后即按 .wslconfig 运行。
【注意:重启前务必关闭所有正在运行的 WSL2 发行版终端窗口,否则 wsl --shutdown 可能失败】
验证限制是否生效
进入已启动的 WSL2 终端,运行:
free -h
观察输出中的 total 行:mem 的 total 应接近 2GB(如 1.9Gi),swap 的 total 应接近 1GB(如 996Mi)。若仍显示 8GB 或更高,说明 .wslconfig 未被识别——检查文件是否放在正确路径、是否隐藏扩展名(如 .wslconfig.txt)、是否用了中文标点。
进阶:为不同发行版单独设限(可选)
方法一:全局统一限制
.wslconfig 中的 [wsl2] 块对所有 WSL2 发行版生效,适合多数用户。
方法二:单发行版覆盖(需 WSL 版本 ≥ 0.67.6)
在对应发行版根目录下创建 /etc/wsl.conf,写入:
[wsl2]
memory=1.5GB
该设置优先级高于 .wslconfig,但仅作用于当前发行版。首次启用需先运行 wsl --shutdown 再重启该发行版。











