wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.net – 如何计算任务管理器的内存使用情况?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

好的,所以我使用WMI(.net / C#)不断收集有关机器上运行的特定进程的数据.我通过 Win32_PerfFormattedData_PerfProc_Process课得到数据.那个类有很多属性,但是我们感兴趣的属性如下: uint64 PageFileBytes; 该进程在页面文件中使用的值(以字节为单位).分页文件存储进程中使用的不包含在其他文件中的内存页面.分页文件由所有进程共享,并且
好的,所以我使用WMI(.net / C#)不断收集有关机器上运行的特定进程的数据.我通过 Win32_PerfFormattedData_PerfProc_Process课得到数据.那个类有很多属性,但是我们感兴趣的属性如下:
uint64 PageFileBytes;

该进程在页面文件中使用的值(以字节为单位).分页文件存储进程中使用的不包含在其他文件中的内存页面.分页文件由所有进程共享,并且分页文件中的空间不足可能会阻止其他进程分配内存.

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总数.此属性显示最后观察值;这不是平均值.

uint64 PrivateBytes;

此进程已分配的当前值(以字节为单位)不能与其他进程共享.

uint64 VirtualBytes;

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

uint64 WorkingSet;

此过程在任何时间点的工作集中的最大数量(以字节为单位).工作集是由进程中线程最近触摸的一组内存页.如果计算机中的可用内存高于阈值,即使没有使用页面,也会保留在进程的工作集中.当空闲内存低于阈值时,页面将从工作集中修剪.如果需要它们,则在离开主存储器之前,软件故障返回到工作组中.

我正在使用WorkingSet字段来报告进程的内存使用情况.但是,这与任务管理器所显示的不一致.我尝试使用PrivateBytes,但这不是“正确的”.应用程序监视的过程是.NET进程(如果@R_507_7369@),并且该应用程序被报告使用的内存比任务管理器在同一时间显示的内存多至少100MB.

那么问题是什么是“公式”来计算进程内存使用的最佳近似值,如“任务管理器”所示?

Win32_PerfFormattedData_PerfProc_Process是正确的类.它提取属性是WorkingSetPrivate.不需要公式/计算.

大佬总结

以上是大佬教程为你收集整理的.net – 如何计算任务管理器的内存使用情况?全部内容,希望文章能够帮你解决.net – 如何计算任务管理器的内存使用情况?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。