C# 性能计数器与过程

C# 性能计数器与过程,c#,memory,process,performancecounter,C#,Memory,Process,Performancecounter,我试图测量应用程序内存使用情况,为此有两种方法 PerformanceCounter类(工作集-专用) 进程类(PrivateMemorySize64) 但是他们给出了两个不同的内存使用值 问题: 为什么给出不同的值​​. 我应该用哪一个 谢谢你的帮助 为什么它们输出不同的值​​? 因为它们跟踪不同类型的内存 Process类中的PrivateMemorySize64属性相当于Private Bytes性能计数器 要刷新内存,专用字节是应用程序请求(分配)的内存,但不一定使用。此外,专用字节不仅

我试图测量应用程序内存使用情况,为此有两种方法

  • PerformanceCounter类(工作集-专用)
  • 进程类(PrivateMemorySize64)
  • 但是他们给出了两个不同的内存使用值

    问题:

  • 为什么给出不同的值​​.
  • 我应该用哪一个
  • 谢谢你的帮助

    为什么它们输出不同的值​​?

    因为它们跟踪不同类型的内存

    Process类中的PrivateMemorySize64属性相当于Private Bytes性能计数器

    要刷新内存,专用字节是应用程序请求(分配)的内存,但不一定使用。此外,专用字节不仅是物理内存,而且是分页文件等

    在另一端,工作集-私有性能计数器跟踪私有字节的子集,它只表示进程正在使用的物理内存,不能与其他进程共享

    我应该用哪一个

    这取决于你想跟踪什么。这两种方法都很有用(还有更多!)。如果您想跟踪运行进程分配的整个内存,那么私有字节就是最好的选择。如果只想跟踪进程使用的物理内存,那么应该使用工作集

    这些参数中任何一个的值持续增加都可能表明代码中存在问题


    性能计数器很好,您应该使用它们,但请注意,它们包含许多与您编写的自定义代码没有直接关系的内容,如果您想了解有关代码内存利用率的更多详细信息,我建议您使用良好的内存分析来补充您的分析工作。

    您可以展示您的代码来衡量这种差异吗?使用
    PerformanceCounter
    进程
    类来收集有关内存的数据有什么区别当前进程正在使用的某些资源?换言之,这两者在评测方面有什么不同?