Windows 8.1 内存泄漏在进程监视器和poolmon中不可见

Windows 8.1 内存泄漏在进程监视器和poolmon中不可见

经过几天的尝试,在 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。不过,修复这个问题并不能解决您的问题,因为您甚至还没有接近用完提交。

相关内容