排查Windows 下的内存使用率过高,但是任务管理器看不到进程
出现的问题最近我们的Book在内部使用的时候,很多人反馈都没打开什么应用,但是任务管理器上却显示内存接近80%-90%,如下图所示。
排查步骤
1、通过任务管理器排查
在Win11任务管理器上,其实包含了压缩的内存管理,系统会动态管理内存使用的。
资源监视器排查内存选项,观察是哪一个进程占用较高
[*]提交:操作系统为进程保留的虚拟内存,是程序独占的内存(包含物理内存和在页面文件中的内存)(单位:KB)
[*]工作集:进程当前正在使用的物理内存量(单位:KB)
[*]可共享:进程所使用的可与其它进程共享的物理内存量(单位:KB)
[*]专用:由该进程所使用而其它进程无法使用的物理内存量(单位:KB)
工作集=可共享+专用
从进程内存详细输出结果来看,所有进程内存使用率总和并不会达到那么高的水位线。所以从单纯使用该工具无法进行下一步分析。
2、通过RAMMap分析
RAMMap工具较任务管理器可以看到更详细的内存信息。首先下载该工具,工具下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/rammap
下载完成之后,直接启动执行文件,可以看到如下内存分析结果:
其中,Nonpaged Pool(未分页池)占用内存过多,约5G左右。具体这块内存是哪部分使用掉的呢?该工具是无法核查到的,所以需要其他工具进一步核查。
3、通过Poolmon分析
继续上面的排查,想要知道Nonpaged Pool(未分页池)具体是哪个程序占用的,需要借助Poolmon工具分析。
现在百度直接搜索 Poolmon.exe 直接下载,避免需要安装Wdk的工具集:Poolmon官方版下载-Poolmon(核心内存泄漏检测工具)下载 v5.2.3790 - 多多软件站
安装启动PoolMon工具
默认列出了nonpage以及page相关信息。按大写字母“P”,可以只列出nonpage相关信息,然后再按大写字母“B”,按照内存大小倒序排序。
从排序结果可以看到,主要是Tag为:Mloc 占用内存较大。
打开cmd窗口,进入c:/windows/system32/drivers,然后输入命令:
findstr /m /l Mloc *.sys
命令执行结果为:
eamonm.sys edevmon.sys ehdrv.sys epfw.sys epfwwfp.sys
定位到具体的驱动文件之后,进一步核查驱动信息,定位到具体是哪个程序
从以上五个截图可以详细看到,这几个驱动文件对应的程序为:ESET Security软件。
核查服务器上运行的程序,确认确实有启动该程序。
最终判断,是由于该程序导致nonpaged pool占用内存较大,从而导致服务器整体内存使用率较高。
参考文档:win内存使用率过高但是资源监视器查看不到进程,排查思路 - 技术文章 - 云掣
来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除
页:
[1]