关闭所有程序后内存未释放

关闭所有程序后内存未释放

最近我注意到 Windows 操作系统在启动时占用 5GB,在与其他程序一起运行时占用 8GB。即使关闭所有正在运行的程序,内存 (RAM) 也不会释放。

在此处输入图片描述

这是什么原因?我该如何解决?

答案1

驱动程序导致内存泄漏。查看非分页内核内存的高值(您的情况是 4.8 GB)。您的情况是超过 1 GB。您可以使用池妖查看哪个驱动程序导致高使用率。

安装Windows WDK,运行poolmon,根据P池类型对其进行排序,以便非分页位于顶部,并通过B字节来查看使用最多内存的标签。

现在查看哪个pooltag使用了最多的内存,如下所示:

在此处输入图片描述

现在打开 cmd 提示符并运行 findstr 命令来查看哪个驱动程序使用了此标签:

在此处输入图片描述

现在转到驱动程序文件夹 ( C:\Windows\System32\drivers) 并右键单击有问题的驱动程序(intmsd.sys如上图所示)。单击属性,转到详细信息选项卡以查找产品名称。查找该产品的更新。

如果pooltag仅显示Windows驱动程序或在pooltag.txt("C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\triage\pooltag.txt")中列出,则您必须使用xperf 来追踪导致使用的原因. 安装Windows SDK 中的 WPT,打开以管理员身份运行 cmd.exe然后运行:

xperf -on PROC_THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C:\pool.etl

捕获 30-60 秒的增长。使用 WPA.exe 打开 ETL,将池图添加到分析窗格。

将pooltag列放在第一位,并添加stack列。现在加载符号进入 WPA.exe 并展开您在 poolmon 中看到的标签堆栈。

在此处输入图片描述

现在找到您可以在堆栈中看到的其他第三方驱动程序。这里的Thre标签(线程)由 G-Data 的 AVKCl.exe 使用。查找驱动程序/程序更新以修复它。

答案2

有一个功能叫做超级取回从 Windows Vista 开始,让所有额外的 RAM 都有事可做。您经常使用的程序将被缓存,以便加载速度更快。任务管理器/资源监视器输出并不总是完美的,但它不会造成任何损害。

相关内容