微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何计算任务pipe理器的内存使用情况?

好吧,我正在使用WMI(.net / C#)不断收集有关在机器上运行的特定进程的数据。 我通过Win32_PerfFormattedData_PerfProc_Process类获取数据。 这个类有很多属性,但我们感兴趣的是如下:

uint64 PageFileBytes;

值(以字节为单位)该进程在页面文件中使用的值。 分页文件存储进程使用的未包含在其他文件中的内存页面分页文件由所有进程共享,分页文件中缺less空间可阻止其他进程分配内存。

uint32 PoolNonpagedBytes;

分页池中的值,以字节为单位,表示无法写入磁盘的对象的系统内存区域(操作系统使用的物理内存),但只要分配给它们,它们就必须保留在物理内存中。 Win32_PerfFormattedData_PerfOS_Memory中的PoolNonpagedBytes与Win32_PerfFormattedData_PerfProc_Process中的PoolPagedBytes属性的计算方式不同,因此它可能不等于Win32_PerfFormattedData_PerfProc_Process的所有实例的PoolPagedBytes总数。 该属性显示最后一个观察值; 这不是一个平均值。

uint32 PoolPagedBytes;

页面缓冲池中的值,以字节为单位,表示在不使用时可以写入磁盘的对象的系统内存区域(操作系统使用的物理内存)。 Win32_PerfFormattedData_PerfOS_Memory中的PoolNonpagedBytes属性的计算方式与Win32_PerfFormattedData_PerfProc_Process中的PoolPagedBytes属性不同,因此它可能不等于Win32_PerfFormattedData_PerfProc_Process的所有实例的PoolPagedBytes总数。 该属性显示最后一个观察值; 这不是一个平均值。

在这个exception消息中引用了什么“配额”:没有足够的配额可用于处理此命令

与多个用户的WCF REST服务基本authentication

如何检查.NET框架是否安装

捕获屏幕截图包括.NET中的半透明窗口

WinProcEvent一个或多个SetWinEventHookcallback?

uint64 PrivateBytes;

以字节为单位的当前值,该进程已经分配了不能与其他进程共享的值。

uint64 VirtualBytes;

当前进程正在使用的虚拟地址空间的大小(以字节为单位)。 使用虚拟地址空间不一定意味着相应地使用磁盘或主内存页面。 虚拟空间是有限的,通过使用太多,该过程可能会限制其加载库的能力。

uint64 WorkingSet;

在这个过程的任何时间点的最大数量,以字节为单位。 工作集是进程中线程最近触及的一组内存页面。 如果计算机中的可用内存超过阈值,则即使不在使用中,页面也会留在进程的工作集中。 当可用内存低于阈值时,页面将从工作集中删除。 如果需要的话,在他们离开主存之前,它们被软件故障重新放回工作集。

我目前使用WorkingSet字段来报告进程的内存使用情况。 但是,这与任务pipe理器显示内容不一致。 我尝试过使用PrivateBytes但这也不是“正确的”。 应用程序监视的进程是一个.NET进程(如果这很重要),应用程序会报告它使用至less比任务pipe理器同时显示多100MB的内存。

所以问题是什么是“公式”来计算过程的内存使用情况的最佳近似,如任务pipe理器所示?

以编程方式更改IE开发人员工具用户代理设置

C#更改非Unicode语言或更改位置

在不使用OpenOffice自动化的情况下将SXW转换为PDF

.net方法模仿windows认的文件重命名行为

Windows任务栏中search与我自己的结果

Win32_PerfFormattedData_PerfProc_Process是正确的类。 它从属性WorkingSetPrivate 。 没有公式/计算需要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐