首页 » 其他

开启WSL2时vmmem占用内存过多

   发表于:其他评论 (0)   热度:2526

装了wsl2+docker后内存使用8G 于是从网上搜了一下有三种方法可以解决, 我用的是限制VM的内存使用 的方法,设置好 .wslconfig 文件后重启wsl 内存占用立即下来了, 长期使用的效果还得后边再看一下 。 看评论有的说不好用 或是说 运行时间长了不好用,这个还得再关注一下 效果如何。 

一、限制VM的内存使用

       在用户文件夹下通过配置wsl2的.wslconfig文件,来限制wsl2使用的内存的大小

  1. 按下Windows R 键,输入 %UserProfile% 并运行进入用户文件夹
  2. 新建文件 .wslconfig ,然后使用记事本编辑
  3. 填入以下内容并保存, memory为wsl2分配的内存上限,可根据自身电脑配置设置
[wsl2]
# 要分配给 WSL 2 VM 的内存
memory=3GB  # Limits VM memory in WSL 2GB, also can be set to other values

# 要向 WSL 2 VM 添加的交换空间量,0 表示无交换文件。 交换存储是基于磁盘的 RAM,当内存需求超过硬件设备上的限制时使用。
swap=0

# 一个布尔值,用于指定绑定到 WSL 2 VM 中的通配符或 localhost 的端口是否应可通过 localhost:port 从主机连接。
localhostForwarding=true

# 要分配给 WSL 2 VM 的逻辑处理器数
processors=2 # Makes the WSL 2 VM use two virtual processors, also can be set to other values

设置该文件并重新启动WSL后,不管vmmem内存使用情况如何,仍然会消耗掉限额的内存,但至少它不会再继续增长了,也可以设置为其他值,如512MB、1GB等,即可以将其控制在某个范围之内。

二、关掉WL2 VM

在不使用WSL2时,在PowerShell执行wsl --shutdown,从而关掉WL2 VM。

 

三、定期释放cache内存

Linux内核中有一个参数/proc/sys/vm/drop_caches,是可以用来手动释放Linux中的cache缓存,如果发现wsl2的cache过大影响到宿主机正常运行了,可以手动执行以下命令来释放cache:

 echo 3 > /proc/sys/vm/drop_caches

当然也可以设置成定时任务,每隔一段时间释放一次。

 

(。・v・。)
喜欢这篇文章吗?欢迎分享到你的微博、QQ群,并关注我们的微博,谢谢支持。