如何识别哪个进程提交了内存

Dun*_*ken 3 memory windows virtual-memory process-explorer

我的系统在提交的内存上运行很高(在 8GB RAM + 2 GB 页面文件中 85% 的内存已提交)。物理使用率约为 65%。

如何确定哪个进程正在分配大部分已提交的内存?我知道内存可以在进程之间共享。到目前为止,我已经使用 VMMap 来显示已提交的内存,但这是基于每个进程的,并且不考虑页面文件支持的部分

在此处输入图片说明

在此处输入图片说明

Vom*_*yle 8

PowerShell 解决方案

1.获取使用最多虚拟内存的前 10 个进程

Get-Process | Sort PagedMemorySize-Desc | Select Name, PagedMemorySize, VirtualMemorySize -First 10
Run Code Online (Sandbox Code Playgroud)

输出示例

Name                  VirtualMemorySize PagedMemorySize
----                  ----------------- ---------------
UrBackupClientBackend         685735936       548347904
explorer                     1529909248       478908416
Microsoft.Photos             1303465984       433094656
MBAMService                   661987328       228876288
MicrosoftEdgeCP               894496768       219799552
MsMpEng                       667783168       205774848
MicrosoftEdgeCP               874590208       202584064
mstsc                         440627200       185860096
javaw                         886177792       185556992
MicrosoftEdgeCP               802746368       146792448
Run Code Online (Sandbox Code Playgroud)

2.获取所有提交的虚拟内存的总和

Get-WmiObject win32_operatingsystem | Select @{L='commit';E={($_.totalvirtualmemorysize - $_.freevirtualmemory)*1KB/1GB}} 
Run Code Online (Sandbox Code Playgroud)

输出示例

commit
------
4.56205749511719
Run Code Online (Sandbox Code Playgroud)

配套资源


har*_*ymc 4

Process Explorer 可以显示每个进程的此信息:

图像

以下是如何在 Process Explorer 中获取上述屏幕:

  • 单击菜单“视图”>“显示下部窗格”
  • 单击菜单“视图”>“下窗格视图”>“DLL”
  • 单击菜单“视图”>“显示未命名的句柄和映射”
  • 单击上部窗格中的进程
  • 右键单击下部窗格的标题并选择选择列...
  • 在 DLL 选项卡中,勾选映射大小Mappinq 类型
  • 单击“确定”

Process Hacker 可以类似地显示此信息,在选择并双击进程后,在“句柄”选项卡中取消选中“隐藏未命名句柄”