Tel*_*lli 5 ram virtual-machine visual-studio-code windows-subsystem-for-linux wsl-2
我一直在 VSCode 上使用 WSL。我最近注意到,关闭 VSCode 或单个 WSL 终端后,一个名为的进程vmmem会继续使用大量 RAM。
我找到了如何使用以下命令在 CMD 或 PowerShell 中手动关闭它:
wsl --shutdown
Run Code Online (Sandbox Code Playgroud)
但我一直在尝试找到一种方法,让它在关闭 WSL 终端或 VSCode 时自行关闭。
此问题过去没有发生过,这意味着它很可能是由 Windows 更新引起的。
我已尝试更新我的 WSL 并更新我的 Windows 版本,但到目前为止我的所有研究都没有任何结果。
这是我当前使用的 WSL 版本:
Version WSL : 0.70.4.0
Version du noyau : 5.15.68.1
Version WSLg : 1.0.45
Version MSRDC : 1.2.3575
Version direct3D : 1.606.4
Version de DXCore : 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
version Windows : 10.0.22000.1098
Run Code Online (Sandbox Code Playgroud)
是的,Vmmem是作为 WSL2 虚拟机的一部分运行的进程。是的,awsl --shutdown将终止虚拟机本身(以及其中运行的任何发行版)。
通常,WSL2 在两个阶段终止:
首先,当 WSL2 发行版中没有“交互式启动的进程”(前台或后台)时,它将在 15 秒后终止。目前这是不可配置的。
其次,当所有正在运行的 WSL2 发行版都终止时,WSL2 VM 本身将在 60 秒后关闭。该值可在 Windows 11 上的最新 WSL2 版本上进行配置。此时,Vmmem应该结束并释放其内存。
Vmmem当不会终止时,要检查的第一件事是发行版是否仍在运行。从 PowerShell 或 CMD:
wsl -l -v
# wsl --list --verbose
Run Code Online (Sandbox Code Playgroud)
如果任何 WSL2 发行版仍处于该Running状态(我的猜测是,对于您而言,其中一个是),那么 WSL2 VM(以及 Vmmem 进程)也将仍在运行。
假设您只运行一种发行版:
wsl -e ps axjff
Run Code Online (Sandbox Code Playgroud)
如果您没有运行 Systemd,则唯一应该运行的是:
init流程ps本身plan9,WSL2 中相当新的进程(从 0.70.0 开始),但这不会阻止分发终止。如果你正在运行Systemd,那么将会有很多额外的服务。但是,由 Systemd 本身(the /sbin/init)启动的任何内容都不应阻止 WSL2 发行版终止。
xsel刚才检查时,我注意到我的一个(非 Systemd)版本中有一个虚假内容,但我认为这只是由于安装了 Fish shell 所致。然而,它阻止了 Ubuntu 终止,从而阻止了 WSL2 VM 关闭。
VSCode“WSL 服务器”是否为您留下了任何内容?或者您的开发过程中产生了后台进程?
| 归档时间: |
|
| 查看次数: |
4632 次 |
| 最近记录: |