Win10 内存泄露/非分页缓冲池占用过多问题分析定位

  内存泄露或内存非分页缓冲池不能释放,会造电脑自开机会一直内存占用一直缓慢上升,资源管理器中看不到有哪些程序高内存占用,直到超过90%,造成系统一直卡顿,只能频繁重启解决。造成这种情况原因除了病毒,还有两个最可能的原因,内存泄露和非分页缓冲池不能释放。


  问题定位用到三个小工具:RAMMap、Poolmon、Strings.exe


1、管理员打开RAMMap,确认哪些内容占用内存过高。其实非分页缓冲池占用也可以通过资源管理器查看:


  

  如上图,电脑16G内存,随着电脑的运行非分页缓冲池占用达到13.4不能释放,在进程里完全看不到高内存占用的程序。


2、找到Poolmon.exe下载的文件夹,命令行运行Poolmon.exe –p –d

  会弹出Poolmon的诊断界面,此时应该按占用内存从大到小排好序了。这就是poolmon收集到的各种driver内存的使用情况。


  


  由于我的电脑这个问题已经解决了,所以没有太高的占用,我们假定第三行FMsl为占用内存非常多。


3、定位到drivers之后,怎么判断这是谁的驱动呢?可以使用string(sysinternal 工具)查找%SystemRoot%\System32\drivers文件中定位。
  具体方法:将strings.exe放入C:\Windows\System32\drivers文件夹里,右键--以管理员方式运行,在跳出的窗口中点击同意思,然后管理员模式命令行运行 strings * | findstr FMsl,即可定位到是谁的drivers了!
  


  此步骤根据电脑性能可能会查询的慢一些,从上图看到定位到fltMgr.sys,我们Google下就可以了解是哪个程序的驱动,然后想办法解决。

  附工具下载地址:
  RAMMap:https://docs.microsoft.com/zh-cn/sysinternals/downloads/rammap
  Poolmon: https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk (推荐自行搜索下载poolmon.exe,微软官方是需要先下载安装WDK,然后在C:\Program Files (x86)\Windows Kits\10\Tools\x64找到poolmon.exe)

  strings.exe: https://docs.microsoft.com/zh-cn/sysinternals/downloads/strings

  文章来源:https://blog.csdn.net/weixin_40188600/article/details/82853017


  注:Windows10 内存分页缓冲池(Nonpaged Pool)占用过高、不能释放,大多数情况下管理员运行cmd: sc config ndu start= disabled ,然后重启电脑就可解决,很多情况下都是这个程序引起的,它和很多网卡驱动自带的监视程序冲突,导致内存泄露,非分页缓冲池不能释放。


AD: 腾讯云 1核2G云服务器首年38元
推广推荐

Proudly Powered By WordPress | IEWB.NET 2009-2024 版权所有