解决WSL2内存不释放问题的最佳指南

silverwq
2022-05-22 / 0 评论 / 1,399 阅读 / 正在检测是否收录...

概述

在wsl中运行程序,当程序停止之后,占用的内存却没有释放。本篇文章主要介绍限制内存,并且定时清除内存缓存。

解决办法

在windows本机上配置限制最大可用内存

  1. 按下 Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹
  2. 新建文件 .wslconfig ,然后记事本编辑,填入以下内容并保存, memory 为系统内存上限,这里我限制最大 2gb,可根据自身电脑配置设置
[wsl2]
memory=2GB
swap=0
// 这个好像不需要
localhostForwarding=true
  1. 重启wsl即可

定期清除缓存

wsl里定期清除缓存,把以下命令添加到定时任务里即可

sync; echo 3 > /proc/sys/vm/drop_caches; touch /root/drop_caches_last_run

最新版本已经回自动释放内存了

在wslconfig里配置如下即可,官方文档:https://learn.microsoft.com/zh-tw/windows/wsl/wsl-config

[wsl2]
processors=4
memory=3GB
swap=4GB
# localhostForwarding=true

[experimental]
# 自动释放内存
autoMemoryReclaim=dropcache
# 自动释放磁盘
sparseVhd=true
# 网络自动映射
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
0

评论 (0)

取消