WSL2默认内存占用过高导致系统卡顿,需通过.wslconfig全局限制或wsl --manage单发行版调限,并验证free -h和nproc结果。

Windows系统中WSL2默认会动态占用高达主机内存50%或8GB(取小值)的物理内存,且CPU核心数与宿主机完全一致,导致日常使用中Vmmem进程持续吃满资源、Windows响应卡顿甚至蓝屏。必须通过配置文件或命令行强制设定硬性上限才能解决。
用.wslconfig全局限制所有WSL2发行版的资源
这一步适用于所有已安装的WSL2发行版,配置一次永久生效,无需为每个发行版单独设置。
第一步:按下 Win + R,输入 %UserProfile% 回车,进入当前用户主目录。
第二步:在该目录下新建一个纯文本文件,命名为 .wslconfig(注意开头是英文点号,不能带.txt后缀;若系统隐藏扩展名,请务必确认实际文件名正确)。
第三步:用记事本或VS Code打开该文件,写入以下内容(根据你主机物理内存合理调整数值,例如16GB内存建议设为6–8GB):
[wsl2]
memory=6GB
processors=4
swap=2GB
第四步:保存时必须选择UTF-8无BOM编码格式(记事本中需点击“另存为”→底部“编码”下拉菜单选“UTF-8”)。编码错误会导致配置静默失效。
第五步:以管理员身份打开PowerShell,执行 wsl --shutdown 彻底终止所有WSL2实例——仅stop容器或关闭终端窗口无法释放Vmmem内存,必须执行此命令。
第六步:重新启动任意WSL发行版(如Ubuntu),配置立即加载。
用wsl --manage为单个发行版动态调限(WSL 2.5+专属)
该方法不修改配置文件,不重启其他发行版,适合临时压测或调试特定环境。
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
方法一:确认目标发行版名称和WSL版本
在PowerShell中依次执行:
wsl -l -v → 查看发行版名称(如Ubuntu-24.04)
wsl --version → 确认Version字段≥2.5
方法二:直接设置内存上限
执行命令:wsl --manage Ubuntu-24.04 --memory 4GB(将Ubuntu-24.04替换为你的真实发行版名)
方法三:同时限制CPU核心数
执行命令:wsl --manage Ubuntu-24.04 --processors 2
注意:该命令立即生效,但仅对指定发行版起作用,且重启该发行版后仍保持生效——它会覆盖.wslconfig中对应参数。
验证配置是否真正生效
配置完成后必须验证,否则可能因路径错误、编码异常或版本不兼容导致设置未加载。
在WSL终端中运行:free -h → 查看“Mem:”行的total值是否等于你设置的memory值
运行:nproc → 输出数字应与你设置的processors值一致
运行:wsl --list --running → 若返回“没有正在运行的分发版”,说明子系统已完全退出,此时再启动发行版才能确保新配置加载

















