WSL は割り当てメモリ上限を指定できるので小さめにしておけばいいのだけど ときどき大きめのメモリが必要になるので上限は余裕を持たせておきたいのですよね
通常時はメモリを使って無くても Linux 側でキャッシュとして確保されたものも Windows からすると使用中として扱われて使用メモリが増えます
root@WIN-NOTE:~# free -h
total used free shared buff/cache available
Mem: 6.1Gi 139Mi 4.8Gi 0.0Ki 1.2Gi 5.8Gi
Swap: 2.0Gi 0B 2.0Gi
buff/cache のところ
解放するために手動でキャッシュをクリアします
root@WIN-NOTE:~# echo 3 > /proc/sys/vm/drop_caches
root@WIN-NOTE:~# free -h
total used free shared buff/cache available
Mem: 6.1Gi 135Mi 5.9Gi 0.0Ki 110Mi 5.8Gi
Swap: 2.0Gi 0B 2.0Gi
/proc/sys/vm/drop_caches に 3 を書き込むとクリアしてくれます (root 権限が必要)
こうすると Windows 側の vmmem の使用量も小さくなります
一気に下がるんじゃなくて時間をおいて段階的に下がる感じ
完全に used + buff/cache の値まで下がらず多少余裕を持って確保されてるみたい
上の状況だと 1GB 以上あったものが 700MB くらいまで減少
以前 WSL2.0 の新機能で自動でキャッシュを解放して Windows に戻してくれる機能が追加されるとか話がありましたがまだデフォルトで有効にはなってないみたいですね