某个进程占用越用越涨时怎样定位内存泄漏
故障现象 / 适用场景
- 开机越久越卡重启后立即恢复
- 某进程内存占用持续单向上涨
- 关掉主界面后台占用仍不回落
- 多日后开始提示内存资源不足
可能原因 / 知识点
程序未释放对象
软件反复打开关闭窗口却没释放分配的对象,工作集与提交量一路抬升,属于典型的用户态内存泄漏。
内核驱动池泄漏
网卡或存储驱动在内核池里分配后忘记回收,任务管理器看不到具体进程,只表现为非分页池异常增大。
缓存策略异常
某服务把大量文件长期驻留内存且无淘汰机制,看似占用高却不能按需释放,逐渐挤占可用空间。
实操步骤
第1步:建立基线
重启后按 Ctrl+Shift+Esc 在任务管理器性能页记下已用与已提交数值,再用资源监视器 resmon 截一张初始占用作为对照基线。
第2步:定时取样
每隔一小时在资源监视器内存页按提交量排序,记录增长最快的进程;也可用 perfmon /res 打开资源监视视图连续观察趋势。
第3步:查内核池
若没有明显涨的进程却整体吃紧,用管理员命令提示符运行 poolmon 按非分页池排序,定位占用标签对应的可疑驱动。
第4步:干净启动对比
用 Win+R 输入 msconfig 做干净启动,只留系统服务跑同样时长,若不再增长即可确认是第三方常驻项引入。
第5步:收敛验证
逐个恢复启动项并用 eventvwr.msc 复查错误,锁定责任程序后到设备管理器看对应驱动版本,升级或回退后复测占用曲线。
核心技能速记
预防与提醒
- 记录开机基线再看曲线,比盯某一刻的数值有用得多。
- 进程都正常却仍涨,记得查非分页池是不是驱动泄漏。
- 定位期间别顺手重启,否则增长证据全丢。
常见问题
任务管理器看不到谁在涨怎么办
多半是内核态或驱动池在涨,用户态进程列表里不体现。用 poolmon 按池标签排序找可疑驱动,再用 msconfig 干净启动对比;也可在资源监视器里看非分页池是否随时间单调上升。
定位到泄漏后能临时缓解吗
可以定时重启该进程或更新对应驱动,但这只是缓解。根治要等软件或驱动修复版本;期间用任务管理器盯提交量上限,必要时用 sysdm.cpl 适当放大页面文件,避免直接报内存不足。