记一次Windows10驱动导致的内存泄漏

放假回家,发现家里的台式机开机之后内存占用越来越高,直至占满内存。但是安装的软件有点多,若重装系统将很麻烦,于是直接内存分析,找出病原。

本文截图皆为事后补充,可能与有问题症状的截图不同,仅供参考

工具准备

请根据下面的不同方法选用

  • RAMMap
  • PoolMon
  • CMD 或 PowerShell

症状描述

在开机后,非分页缓冲区大小以大约4MB/s的速度增长,直至占用全部内存空间,导致死机。在任务管理器中没有发现异常占用内存的程序。

解决方案

使用sfc /scannow检查系统

遇到Windows问题,首先检查系统文件完整性,以确保并非系统文件被篡改引起的问题。

但是在本例中,尽管命令行提示已经修复被修改的文件至Windows原版,但是依旧存在问题。

使用RAMMap查看内存占用情况

首先想到了这个小工具。这个工具可以查看内存的详细占用情况、分页,也有统计硬盘占用情况的功能(读取MFT分区表)。但是该程序仍然无法查找出内存泄漏的罪魁祸首,那么内存泄漏的程序应该不是用户的应用程序了。于是我把目光转向Windows驱动上。

屏幕截图 2021-07-15 132434.png

使用PoolMon监视Windows内存池

该程序可以查看当前Windows内存池的具体情况。

屏幕截图 2021-07-15 132613.png

首先按下P键,切换到非分页缓冲区的占用情况,再按下B键使条目按照Byte大小排列,最后按下D键使条目按照Diff大小排列。

Diff越大,说明内存使用或泄漏越多。不正常的情况Diff会逐渐增大,只要看变化条目(白色高亮条目)即可。

记录下不正常条目的Tag,然后在Driver目录下搜索即可。搜索命令:findstr /s /m /l "<不正常内存池Tag>" C:\Windows\System32\drivers\*

故障根源

屏幕截图 2021-07-15 133410.png

由搜索结果可知,HDAudio.sys内存泄漏,具体原因未知。我猜测是硬件问题,或者是NVIDIA音频驱动的问题。目前正在删除NVIDIA驱动,排除故障原因。

已有 2 条评论
  1. 马内

    Windows10没有win7好用

    马内 | | Windows 7 x64 Edition | Google Chrome 91.0.4472.124 回复
  2. wys

    直接换台电脑吧?

    wys | | Mac OS X 10.15.7 | Google Chrome 91.0.4472.164 回复
发表新评论