经过几天的尝试,在 Google 上搜索所有信息并尝试了很多方法后,我还是毫无头绪。
我有一台 Razer 2013 Blade Pro,内存为 8GB。我分配了 30 GB 作为额外的虚拟内存。
我的系统内存占用很大,一天后就必须重启。任务管理器总是显示使用了 8GB 中的 7.6-7.8GB(过了一段时间)半天后显示已提交 10+GB。分页池和非分页池不到 1 GB。缓存不到 1 GB 进程加起来不到 1 GB。
通常情况下,“poolmon”显示其他东西(例如驱动程序)正在使用内存。但是,在我的情况下,poolmon 没有显示任何额外的使用情况。目前,12GB 的磁盘空间和 8GB 的实际内存正在使用中,没有任何东西在使用它们。
所以本质上我的问题是:
如果任务管理器和poolmon都没有显示内存丢失或使用情况,我还能尝试什么来找出是什么占用了20GB的内存?
Poolmon-b:
Memory: 8304828K Avail: 357404K PageFlts:749759184 InRam Krnl:31464K P:248372K
Commit:12798116K Limit:32880828K Peak:12958348K Pool N:168816K P:303892K
System pool information
Tag Type Allocs Frees Diff Bytes Per Alloc
CM31 Paged 76680 ( 0) 49859 ( 0) 26821 122609664 ( 0) 4571
wcdl Nonp 43 ( 0) 0 ( 0) 43 32427744 ( 0) 754133
MmSt Paged 997690 ( 0) 989424 ( 0) 8266 28019248 ( 0) 3389
rzud Nonp 109134 ( 0) 46163 ( 0) 62971 15651296 ( 0) 248
CM25 Paged 3295 ( 0) 0 ( 0) 3295 14479360 ( 0) 4394
MmRe Paged 21218 ( 0) 19623 ( 0) 1595 14009152 ( 0) 8783
Toke Paged 12315343 ( 0) 12310825 ( 0) 4518 8803808 ( 0) 1948
ConT Nonp 1585 ( 0) 1212 ( 0) 373 6365184 ( 0) 17064
BGIK Paged 1 ( 0) 0 ( 0) 1 6221824 ( 0) 6221824
Thre Nonp 449909 ( 0) 447365 ( 0) 2544 5244384 ( 0) 2061
Ntff Paged 582079 ( 0) 578052 ( 0) 4027 5218992 ( 0) 1296
CM16 Paged 9083 ( 0) 8010 ( 0) 1073 4685824 ( 0) 4367
Irp Nonp 75321006 ( 0) 75307341 ( 0) 13665 4645936 ( 0) 339
XENO Nonp 594 ( 0) 399 ( 0) 195 4317616 ( 0) 22141
ViMm Paged 1873388 ( 0) 1862026 ( 0) 11362 4057360 ( 0) 357
File Nonp 59994297 ( 0) 59983847 ( 0) 10450 3492864 ( 0) 334
我在这里看到的唯一不寻常的事情是“pageflts”很高,在poolmon的第一秒之后,它下降到每次更新50k。我猜这说明了一些问题,也许只是有什么东西在以疯狂的速度试图获取内存。
更新:我没有玩它,也没有改变分辨率。
更新:已加载 photoshop 的 Rammap 图像(进程内存为 5GB): 已停止使用 photoshop 的 Rammap 图像(内存仍然显示已满):
同样奇怪的是,除了未显示的 18GB 已提交内存之外,rammap 显示进程中有 5 GB,但事实并非如此。
PS 我使用 malwarebytes rootkit 扫描,但一无所获。我唯一能想到的可能是 Windows 操作系统内存使用方面存在重大错误,或者存在内核 rootkit。
答案1
这是一个虚拟内存 DirectX 问题在 Windows 8 中,这是由于您以不同于桌面分辨率的分辨率和全屏方式运行应用程序/游戏时引起的。
您应该在 Process Explorer 中看到这样的锯齿图:
微软将在 2014 年 8 月更新汇总中发布针对此错误的修复。因此,您必须再等一个月才能修复此问题,或者始终以原始分辨率播放/运行应用程序。
答案2
我不明白你为什么说“进程中有 5 GB,但事实并非如此”。仅从你展示的进程(第二张屏幕截图)来看,我看到的是 3.1 GB。进程的私有工作集并不是它唯一使用的 RAM(其余的是用于可共享页面)。在我看来,你只是一次运行了大量的内存密集型程序;解决办法是减少运行数量,或者减少对它们的使用,这样它们就不需要那么多 RAM,或者增加更多 RAM。
您的高页面错误率也指向了那个方向。
已提交内存未显示在表格中,因为它不是“RAM”,而 RAMmap 则用于核算 RAM 使用情况。已提交内存是一种虚拟地址空间(其他类型,无论如何,在用户空间中,是“映射”和“空闲”)。每个进程的部分内存位于“私有”列中,其余内存位于页面文件中。
有一件事确实很奇怪,那就是您报告了 8 GB RAM +“为额外的虚拟 RAM 分配了 30 GB”,我猜您指的是页面文件(否则我不知道您是什么意思)。这应该导致提交限制为 38GB,但您只显示 31.4 GB。不过,修复这个问题并不能解决您的问题,因为您甚至还没有接近用完提交。