Windows 系统中扩大 WSL2 的内存限制
要在 Windows 系统中扩大 WSL(Windows Subsystem for Linux)的内存限制,需通过修改全局配置文件 .wslconfig
实现。以下是具体操作步骤及目录位置说明:
📂 操作目录
配置文件必须位于 当前 Windows 用户的个人目录 下,路径为:
%UserProfile%\.wslconfig
-
%UserProfile%
具体路径示例:C:\Users\你的用户名\
(如C:\Users\John\
)
- 文件名称:
.wslconfig
(注意开头有一个点)
🛠️ 操作步骤
-
打开用户目录
- 按快捷键
Win + R
打开“运行”窗口; - 输入
%UserProfile%
并回车,自动打开资源管理器跳转到用户目录。
- 按快捷键
-
创建或编辑
.wslconfig
文件- 若目录下无此文件:
- 右键 → 新建 → 文本文档 → 重命名为
.wslconfig
(需显示文件扩展名); - 或通过 PowerShell 创建:
notepad $env:USERPROFILE\.wslconfig
- 右键 → 新建 → 文本文档 → 重命名为
- 若已有该文件:直接双击用记事本打开编辑。
- 若目录下无此文件:
-
写入配置内容
在文件中粘贴以下配置(根据需求调整数值):[wsl2] memory=12GB # 分配给 WSL 的最大内存,建议不超过物理内存的 70% swap=4GB # 交换空间大小,用于内存不足时缓冲 processors=4 # 分配给 WSL 的 CPU 核心数(如 8 核 CPU 建议 ≤6)
💡 参数说明:
memory
:必须设置,否则 WSL 默认仅用 50% 物理内存,易导致编译崩溃(如 LAMMPS 或 CUDA 项目);processors
:限制 CPU 核心可避免资源争抢;swap
:预防内存不足(OOM)错误。
-
重启 WSL 使配置生效
- 管理员身份打开 PowerShell 或 CMD,执行:
wsl --shutdown # 强制关闭所有 WSL 实例
- 重启 Linux 终端(如 Ubuntu)即生效。
- 管理员身份打开 PowerShell 或 CMD,执行:
⚠️ 关键注意事项
-
权限问题
- 若无法直接创建点开头的文件:
- 先用记事本保存为普通文本文件(如
wslconfig.txt
),再重命名为.wslconfig
; - 或在 PowerShell 中执行:
New-Item -Path $env:USERPROFILE -Name ".wslconfig" -ItemType "File"
- 先用记事本保存为普通文本文件(如
- 若无法直接创建点开头的文件:
-
配置验证
- 在 WSL 终端内运行以下命令检查内存是否生效:
free -h # 查看“Total”列是否匹配设置值 nproc # 查看 CPU 核心数
- 在 WSL 终端内运行以下命令检查内存是否生效:
-
路径避坑
- 禁止在
C:\Windows\
、C:\Program Files\
等系统目录操作; - 禁止在 WSL 内部的 Linux 路径(如
/home/
)中创建此文件。
- 禁止在
🧪 配置示例与效果
配置文件内容 | WSL 内验证命令 | 预期输出 |
---|---|---|
[wsl2] memory=12GB processors=4 | free -h | Mem: 12Gi (总内存 12GB) |
nproc | 4 (CPU 核心数) |
📌 重要提示:若需运行 Docker Desktop 或 CUDA 项目(如 LAMMPS 分子动力学模拟),建议
memory
至少设为 8GB,否则可能因 OOM 失败。
通过以上步骤,WSL 即可突破默认内存限制,显著提升编译与计算任务的稳定性。若仍遇资源不足,可逐步增加 memory
值(如 16GB)并重启验证。