提交了大量的内存请求 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 318 天前 via iPhone 输入命令:dir c:\ /a |
![]() | 3 by 318 天前 除了要显示隐藏文件,还要取消勾选“隐藏受保护的系统文件”,才能看见 pagefile.sys 。系统时好像是删不掉。 取消自动管理,自己设置大小,重启 |
4 yinmin 318 天前 via iPhone 你有没有用 WSL ? 或者 hyper-v ? 修改配置限制 WSL 的最大内存,否则 WSL 有可能会占满你的所有内存 |
5 Plutooo 318 天前 开始-资源监视器-内存-提交,看看是哪个进程的问题吧 |
![]() | 6 MossFox 318 天前 我遇到过一例是英特尔某个服务的进程刷了几万个死掉的 pid 在那边,任务管理器里面看不到。 RAMMap 里面才能见到。RAMMap → Processes 看一下有没有同名进程对应巨多 pid 的情况。如果看到了恭喜你就找到罪魁祸首了。 |
8 qbqbqbqb 317 天前 ![]() Windows 任务管理器里的“内存”实际上是常驻集大小( RSS )的意思。当然不包括只申请未使用,或者被交换出的部分了。 要看这些的话需要看“详细信息”tab 里的“提交大小”这一列(默认隐藏,需要右键表头配置之后才能看) |
![]() | 13 ysc3839 317 天前 via Android “已提交”就是。 Windows 支持预分配内存,不使用就不会占用物理内存,但是预分配这部分必须要有预留的虚拟内存。 也就是说只要程序申请成功了,要用的时候肯定有空间给它用,不至于崩溃。如果虚拟内存也不足,那申请时就会失败。 |
![]() | 14 ponder09 317 天前 |
15 Overfill3641 317 天前 Windows 的内存显示是挺迷幻的 进程标签页显示进程 540MB ,给它改成百分比就变成 6.8%( 32GB ) 关闭就在你这截图里面,去掉勾选自动管理,并确保每个盘没有勾上(不建议这么干),然后重启释放 |
16 cjq8z 317 天前 ![]() 可能是驱动干的事情,以前碰到了 killer 网卡有内存泄漏问题,在高速下载的时候,内存泄漏不停的增加,直到消耗完我 32GB 的内存。后续更新网卡驱动后,内存泄漏问题解决了。 |
![]() | 17 greygoo 317 天前 ![]() 建议用 procexp.exe 看,那个也是微软的但是更好用,要去下载。 |