1

在长时间使用 WSL 开发项目时, 打开任务管理器,会发现 VmmemWSL 这个进程占用了超多的内存, 并使得我们的电脑运行变慢,甚至会出现蓝屏关机。

qBZUbABNzZ-965.webp
wsl 内存占用过高

通过查阅 微软关于WSL 内存使用的官方文档, build 20175 版本,之后,windows 系统默认,WSL 能使用的最大内存为 系统总内存的 50% , 在这个版本之前的 windows 系统,能使用的最大内存,不超过系统的80%。 额, 简单来讲, 就是 近期的 Win 11 系统,默认 wsl 能使用的最大内存, 为系统的50% 。 如果不确定, 你的WSL 系统的内存和 共享内存指定情况,你可以打开powerShell 进入你的 linux 系统。

输入 如下linux 命令就能查看目前你的系统内存使用:

free -h --giga

在我系统上,显示的是如下内容。

Untitled.png

这意味着,当你使用WSL2 的时候。 你的系统内存,直接划分出去了5G 。

当你在使用内存占用较大的应用,如 chrome , idea , webStorm 等很容易引起你的内存告急。

那我们如何解决这个问题呢?

  • 微软在wsl 2 中,提供了指定配置 wsl 可用内存的办法.

接下来介绍一下,如何配置wsl 2 内存空间的办法。

创建 .wslconfig 文件。

第一种办法:

在资源管理器的地址栏里 输入C:\Users\YourUsername , 查看是否有 .wslconfig 文件。 如果没有, 直接右键创建一个。

第二种办法:

打开powerShell , 进入 wsl 。

使用如下命令编辑:

vi "$(wslpath "C:\Users\YourUsername\.wslconfig")"

在输入命令时, 切记, 把 yourUsername 换成你的windows 用户名。 别直接复制了,我的提供的命令。

在这里,我选择,我最熟悉的 第二种方式。 直接用vi 编辑。

第一次编辑的话。 应该是打开了一个空文件。 如下图所示:

2222.png

直接 i 键, 开始输入. 在文件里输入如下内容。

[wsl2]
memory=3GB

因为我基本就跑node 的运行时。 3 - 5G 就足够用了。 所以限制3G 。

编辑完, config 文件,我们重启我们的WSL 系统。

WSL 的重启办法是直接使用powerShell 命令。

wsl --shutdown

关闭之后。 在次 通过 wsl 进入 。

使用free 命令 验证一下刚才的配置是否生效, 如果没成功。 按上边的步骤在来一此。

333.png


Sean
26 声望2 粉丝

一个 有趣的老程序员