Vmmem进程(WSL)内存资源过高

本文章向大家介绍Docker Vmmem内存占用过高的解决方案

Windows的linux子系统最大占用可到本机器的80%,所以必须限制一下它的性能来达到优化目的。

解决方案
  1. win + R 输入cmd打开控制台
    在这里插入图片描述
  2. 输入wsl --shutdown
    在这里插入图片描述
  3. win + R输入%UserProfile% (打开用户配置文件目录)
    在这里插入图片描述
  4. 修改或新建 .wslconfig 文件,加入以下内容
[wsl2]
#wsl占用内存
memory=1GB
#交换分区内存(swap类似于Windows的虚拟内存,从硬盘中划分出一个分区,
#在物理内存不够时,就会将硬盘空间虚拟成内存使用,用于解决内存不足的情况。)
swap=0
#限制核心数
#processors = 1
#关闭默认连接,将WSL2本地主机绑定到Windows本地主机
localhostForwarding=true
  1. 重启Docker Desktop
总结

关闭wsl → 在用户配置文件目录编辑 .wslconfig 文件 → 重启Docker Desktop

### 查看与 amd64 架构和 linux-libc 相关的进程 在 Ubuntu 系统中,可以通过特定命令来查找与 `amd64` 架构以及 `linux-libc` 库相关的进程。以下是实现此目标的方法: #### 使用 `ps` 命令过滤进程 可以利用 `ps` 命令结合正则表达式筛选出可能涉及 `linux-libc` 或者针对 `amd64` 架构运行的程序。 ```bash ps aux | grep 'lib.*libc\.so\|amd64' ``` 上述命令会列出所有进程中包含字符串匹配到 `libc.so` 文件路径或者提及 `amd64` 关键字的内容[^1]。 #### 利用 `/proc/[pid]/maps` 检查库加载情况 对于每一个正在运行的进程Linux 提供了一个虚拟文件系统 `/proc` 来存储关于这些进程的信息。其中每个 PID 下都有一个名为 maps 的文件记录该进程所使用的共享对象及其地址范围。 要找出具体哪些进程链接到了某个版本号下的 glibc (即 libc),可编写如下脚本遍历当前活动的所有非僵尸状态进程并检测其内存映射是否存在指定模式: ```bash for pid in $(pgrep -d' ' .); do test -r "/proc/$pid/maps" || continue; awk '/ld-linux-x86-64|libc\.so/{print "'"$pid"' "$0}' /proc/"$pid"/maps ; done ``` 这段代码片段将会打印出符合条件(这里指代的是 x86_64 平台上的动态连接器 ld-linux 及标准 C 函数库本身)的每一行数据连同对应的进程 ID 一起输出至终端屏幕上[^2]^. 如果遇到依赖冲突错误提示类似于 "dpkg: error processing package...", 需要考虑强制覆盖安装某些 deb 包解决方法之一便是采用 dpkg 参数选项 --force-overwrite 执行重新部署动作, 如下所示例子演示了如何处理此类情形 [^3]: ```bash sudo dpkg -i --force-overwrite /path/to/package.deb ``` 当面对 WSL 中极端状况比如完全失去控制权无法正常终止任何指令执行的时候,则需要借助外部手段干预例如 Windows Task Manager 结束 vmmem 进程释放资源占用才能恢复正常工作环境 [^5]. ### 注意事项 以上操作均需具备适当权限方可顺利完成;另外考虑到安全性因素,在生产环境中实施前建议先备份重要资料以防万一发生不可预期后果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值