使用Windows性能监视器(PerfMon)持续监控非分页池占用,关键在于添加Pool Nonpaged Bytes等核心计数器,设置5–10分钟采样间隔并记录8–24小时,通过CSV导出与折线图分析单向不可逆增长趋势来识别内核级内存泄漏。
直接用 windows 自带的性能监视器(perfmon)就能持续、准确地监控非分页池占用,关键是选对计数器、设好采样节奏,并会看趋势。
添加核心计数器:Pool Nonpaged Bytes
这是最直接反映内核级内存压力的指标。它统计的是系统当前在非分页缓冲池中已分配的字节数。
- 打开 PerfMon:按
Win + R,输入perfmon,回车 - 左侧导航到「性能监视器」
- 点击工具栏绿色“+”号添加计数器
- 在「可用计数器」列表中,展开「Memory」类别
- 找到并双击选择:
Pool Nonpaged Bytes - 点击「添加」,再点「确定」
搭配辅助计数器,避免误判
单看 Pool Nonpaged Bytes 容易断章取义,建议同步添加:
-
Memory\Available MBytes:确认物理内存是否真的被耗尽 -
Memory\Pool Paged Bytes:区分是内核泄漏还是服务/驱动的分页池问题 -
Memory\% Committed Bytes In Use:判断整体提交内存压力(超90%需警惕)
设置合理采样,抓准泄漏特征
内存泄漏是缓慢累积的过程,瞬时快照没意义:
- 右键图表空白处 → 「属性」→ 「常规」选项卡
- 将「样本间隔」设为 300–600 秒(5–10 分钟)
- 连续记录至少 8 小时;若业务系统全天运行,建议跑满 24 小时
- 关键判断依据:非分页池是否呈现单向、不可逆增长?比如 6 小时内上涨超 300MB 且无回落,基本可锁定内核级泄漏
导出数据,便于横向对比
- 右键图表 → 「保存数据为…」→ 选 CSV 格式
- 用 Excel 打开后,对
Pool Nonpaged Bytes列做折线图,一眼看出爬升斜率 - 若发现某次重启后该值从几百 MB 开始,几小时后冲到 1.5GB 以上,而服务器总内存仅 16GB,就非常典型
不复杂但容易忽略



















