Koala

修改 WSL2 的默认内存限制

最近在 WSL2 里跑一个 Go 程序,内存用到 12GB 的时候就不动了(本机内存 24GB)。命令行里啥也没有,既没报错也没 panic,就这么静悄悄地停了。

~ Run go test ./
=== RUN   TestDBMetaphysicsProblem
--- PASS: TestDBMetaphysicsProblem (10.94s)
=== RUN   TestDBSequentialOP
FAIL	github.com/therainisme/mlsm	182.824s

一查文档发现,WSL2 默认内存大小上限是 Windows 的一半,来源:https://learn.microsoft.com/en-us/windows/wsl/wsl-config#main-wsl-settings

配置内存限制

在用户文件夹下(路径一般是 C:\users\你的用户名)新建一个 .wslconfig 文件,写入以下内容:

[wsl2]
memory=16GB

保存后用 wsl --shutdown 重启 WSL2。接着在 WSL2 里跑一下 free 命令,即可验证配置有没有生效:

~ free
               total        used        free      shared  buff/cache   available
Mem:        16381032      909836    14426152         980     1045044    15175252
Swap:        4194304       87336     4106968

配置好之后可以看到,内存变成 16GB 了,单位是字节。占大内存的 Go 程序终于能正常跑完了。