提交了大量的内存请求 51G 。根据图 1 可知,ram 用了 28G,剩下 23G 正好和虚拟内存已分配数值匹配上。
根据网上信息,我在 C 盘根目录还找不到 pagefile.sys
文件(已打开隐藏项目显示),并且按内存排序占用最多的也就是 chrome 2G 的样子。我大概看了下,所有的内存占用加起来感觉还没有 28G ,不知道虚拟内存这 23G 哪来的(而且任务管理器也不显示?)
这占的 23G swap 导致 C 盘空间不足 10g ,导致我休眠后会重新开机(休眠失败)---内存的 28g 写入不下了。
我的问题: 1.为什么这 swap file C 盘找不到,如何安全删除?
2.这么大的内存申请(malloc)为什么任务管理器看不到,只有真的使用(memset)才会标识占用?
Ref: https://github.com/cw1997/memory-allocation-test
图 1:
图 2:
1
wisej OP 我把几乎所有看得见的程序都退出,内存占用最多的只有几百 M 的情况下:内存使用中仍然显示有 23G. ..
|
2
yinmin 27 天前 via iPhone
输入命令:dir c:\ /a
|
3
by 27 天前
除了要显示隐藏文件,还要取消勾选“隐藏受保护的系统文件”,才能看见 pagefile.sys 。系统时好像是删不掉。
取消自动管理,自己设置大小,重启 |
4
yinmin 27 天前 via iPhone
你有没有用 WSL ? 或者 hyper-v ? 修改配置限制 WSL 的最大内存,否则 WSL 有可能会占满你的所有内存
|
5
Plutooo 27 天前
开始-资源监视器-内存-提交,看看是哪个进程的问题吧
|
6
MossFox 27 天前
我遇到过一例是英特尔某个服务的进程刷了几万个死掉的 pid 在那边,任务管理器里面看不到。
RAMMap 里面才能见到。RAMMap → Processes 看一下有没有同名进程对应巨多 pid 的情况。如果看到了恭喜你就找到罪魁祸首了。 |
8
qbqbqbqb 27 天前 1
Windows 任务管理器里的“内存”实际上是常驻集大小( RSS )的意思。当然不包括只申请未使用,或者被交换出的部分了。
要看这些的话需要看“详细信息”tab 里的“提交大小”这一列(默认隐藏,需要右键表头配置之后才能看) |
13
ysc3839 27 天前 via Android
“已提交”就是。
Windows 支持预分配内存,不使用就不会占用物理内存,但是预分配这部分必须要有预留的虚拟内存。 也就是说只要程序申请成功了,要用的时候肯定有空间给它用,不至于崩溃。如果虚拟内存也不足,那申请时就会失败。 |
14
wangxin3 27 天前
|
15
v2tudnew 27 天前
Windows 的内存显示是挺迷幻的
进程标签页显示进程 540MB ,给它改成百分比就变成 6.8%( 32GB ) 关闭就在你这截图里面,去掉勾选自动管理,并确保每个盘没有勾上(不建议这么干),然后重启释放 |
16
cjq8z 27 天前 1
可能是驱动干的事情,以前碰到了 killer 网卡有内存泄漏问题,在高速下载的时候,内存泄漏不停的增加,直到消耗完我 32GB 的内存。后续更新网卡驱动后,内存泄漏问题解决了。
|
17
greygoo 27 天前 2
建议用 procexp.exe 看,那个也是微软的但是更好用,要去下载。
|