win10“非分页缓冲池”飙升表明内核或驱动内存泄漏,需用poolmon定位:下载poolmon.exe→管理员powershell运行poolmon -b→按bytes排序查异常tag→结合日志、driverquery及文件路径确认泄漏驱动→核对allocs-frees差值>5000且bytes>100mb即确诊→按s导出快照。

当你发现Win10电脑越用越卡、任务管理器里“非分页缓冲池”数值持续飙升(比如从300MB涨到8GB以上),而所有用户进程内存加起来远低于该值,说明系统内核或驱动存在内存泄漏,必须用PoolMon精准定位泄漏源头。
下载并准备PoolMon工具
PoolMon不随系统自带,需单独获取:访问微软官方下载页,搜索关键词“poolmon.exe standalone download”,下载独立zip包(非完整WDK);解压后将poolmon.exe放入C:\Tools\目录——这个路径便于后续命令行调用,也避免中文路径或空格引发权限异常。
右键“开始”→选择“Windows PowerShell(管理员)”,确保窗口标题栏含“管理员”字样,否则PoolMon无法读取内核内存池数据。
运行PoolMon并按内存占用排序
在管理员PowerShell中输入:poolmon -b → 回车。
该命令启动实时监控,并默认按Bytes(字节数)降序排列。注意:-b参数不可省略,漏掉就看不到内存占用最大的驱动标签;若只输poolmon不加参数,会进入交互模式但初始视图无排序,极易错过关键条目。
等待5~10秒让数据刷新稳定,观察顶部几行的Bytes值——正常系统该列最大值通常不超过20MB;若出现>500MB甚至数GB的条目,立即锁定其Tag列内容(如FMfn、lrtp、ndis等4字符标签)。
识别泄漏驱动的Tag与对应驱动文件
方法一:查Tag缩写含义
常见泄漏Tag有FMfn(关联fltMgr.sys,即MiniFilter框架)、lrtp(联想电脑管家残留驱动lrtp.sys)、ndis(网卡驱动)、dxgkrnl(显卡内核模块)。Tag是驱动申请内存时硬编码的标识,大小写敏感,必须完全匹配。
方法二:用PowerShell反查驱动文件
执行:Get-WinEvent -FilterHashtable @{LogName='System'; ID=219} -MaxEvents 10 | Where-Object {$_.Message -match 'lrtp|FMfn'} | fl TimeCreated, Message → 查最近系统日志中是否出现含该Tag的驱动加载记录;再运行 driverquery /v | findstr /i "FMfn" 粗筛驱动名。
方法三:直接定位驱动路径
在PowerShell中执行:dir C:\Windows\System32\drivers\*.sys | ForEach-Object { $tag = $_.Name.Substring(0, [Math]::Min(4,$_.Name.Length-4)); if ($tag -eq 'lrtp') { Write-Host $_.FullName } } → 快速定位lrtp.sys物理路径,为后续禁用做准备。
确认泄漏:比对Allocs与Frees差值
第一步:按B键再次刷新排序,确保视图仍按Bytes降序。
第二步:找到可疑Tag所在行,横向对比Allocs(分配次数)与Frees(释放次数)两列数值。
第三步:计算差值(Allocs − Frees),若结果 > 5000,且Bytes列同步>100MB,基本可判定为严重泄漏;【差值超过10000时,重启前务必先禁用对应驱动,否则下次开机立刻复发】。
注意:某些Tag(如Proc)本身分配频繁但释放及时,差值大但Bytes小,属正常行为;关键看Bytes是否同步异常增长。
导出快照供离线分析
在PoolMon界面中直接按S键,会将当前全部输出保存为poolmon.txt,位于当前工作目录(通常是C:\Tools)。
这一步操作起来很简单,直接按S就行,但必须在发现可疑Tag后立即执行——因为PoolMon默认不自动保存,关闭窗口即丢失全部历史数据。











