如何排查导致所有退出进程变为僵尸进程、污染页表与活动未使用内存的驱动程序?
如何排查导致所有退出进程变为僵尸进程、污染页表与活动未使用内存的驱动程序?
你遇到的这个状况确实挺闹心的——刚装一周的Windows 11 Pro,内存占用一路飙升,Process Explorer统计的进程内存和系统显示的总占用差了4倍都不止。用RAMMap一查才发现根源:所有启动过的进程退出后根本没被彻底清理,占着大量页表和未使用活动内存,就连你用命令FOR /L %i IN (1,1,100000) DO cmd /c echo %I创建又退出的10万次cmd.exe进程,全留在RAMMap里啃内存。
测试后RAMMap的内存读数显示页表和未使用活动内存占用极高:
所有已退出的进程都还停留在RAMMap中:
下面给你几个实战性强的驱动排查思路,一步步揪出问题根源:
一、先从第三方驱动下手,优先排查“高危”类别
Windows原生驱动几乎不会出这种离谱的问题,大概率是第三方驱动搞的鬼,尤其是那些会Hook进程、监控系统资源的驱动。你可以这么来:
- 打开设备管理器,点击“查看”→“显示隐藏的设备”,重点盯这几类:
- 网络适配器(VPN、代理类驱动首当其冲)
- 显示适配器(比如NVIDIA/AMD的测试版显卡驱动,bug概率更高)
- “非即插即用驱动程序”里的小众驱动(加密软件、磁盘优化工具、外设专用驱动都可能有问题)
- 把最近安装的第三方驱动先卸载,重启系统后再用简化版的测试脚本(比如跑1000次
cmd)验证,看RAMMap里还会不会留僵尸进程。
二、用Windows自带工具抓驱动的异常行为
1. 用驱动验证器(Driver Verifier)查bug
这是Windows官方专门抓驱动问题的工具,操作不难:
- 按下Win+R,输入
verifier打开驱动验证器管理器 - 选择“创建自定义设置(适用于代码开发人员)”,勾选这些核心选项:
- 标准选项:“强制 IRQL 检查”“池跟踪”“死锁检测”
- 额外选项:“检查异常处理”“验证 API 调用”
- 选择“选择要验证的驱动程序名称”,只勾选第三方驱动(别碰系统自带的,否则可能蓝屏)
- 重启系统,之后系统会实时监控驱动行为,如果某个驱动有问题,会直接蓝屏并给出错误代码,你就能根据代码定位到具体驱动。
2. 用性能记录器(WPR)抓内存泄漏细节
这个工具能帮你精准捕捉内存泄漏的关联对象:
- 按下Win+R,输入
wpr打开Windows性能记录器 - 选择“内存”场景,点击“开始”,然后运行测试脚本,等内存明显升高后点击“保存”
- 用Windows性能分析器(WPA)打开保存的.etl日志文件,在“内存”视图里找“未释放的进程对象”“页表内存增长”对应的驱动,就能锁定罪魁祸首。
三、检查系统服务里的可疑关联
有些驱动会绑定系统服务,你可以这么排查:
- 打开任务管理器→“服务”标签,勾选“隐藏所有Microsoft服务”,剩下的第三方服务逐个右键“停止”,停一个就测一次内存情况
- 或者在命令行里输入
sc query type= driver,列出所有驱动,对比正常Windows系统的驱动列表,找陌生的驱动名称,再去查这个驱动对应的软件。
四、干净启动排除干扰,确认问题根源
干净启动能暂时屏蔽所有第三方软件和驱动,帮你确认是不是驱动的问题:
- 按下Win+R,输入
msconfig打开系统配置 - 切换到“服务”标签,勾选“隐藏所有Microsoft服务”,点击“全部禁用”
- 切换到“启动”标签,点击“打开任务管理器”,禁用所有启动项
- 重启系统后,只运行测试脚本,看RAMMap里的僵尸进程问题是否消失。如果消失了,再逐个启用服务/驱动,慢慢排查出具体是哪个在搞事。
最后提个小建议:测试的时候别跑10万次这么极端的脚本,跑个1000次足以验证问题,不然内存占满了系统容易卡死。
备注:内容来源于stack exchange,提问作者Sopel




