You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何排查导致所有退出进程变为僵尸进程、污染页表与活动未使用内存的驱动程序?

如何排查导致所有退出进程变为僵尸进程、污染页表与活动未使用内存的驱动程序?

你遇到的这个状况确实挺闹心的——刚装一周的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内存读数截图

所有已退出的进程都还停留在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

火山引擎 最新活动