概述
在wsl中运行程序,当程序停止之后,占用的内存却没有释放。本篇文章主要介绍限制内存,并且定时清除内存缓存。
解决办法
在windows本机上配置限制最大可用内存
- 按下 Windows + R 键,输入
%UserProfile%
并运行进入用户文件夹 - 新建文件
.wslconfig
,然后记事本编辑,填入以下内容并保存, memory 为系统内存上限,这里我限制最大 2gb,可根据自身电脑配置设置
[wsl2]
memory=2GB
swap=0
// 这个好像不需要
localhostForwarding=true
- 重启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