Is there a way to retrieve a C# app's current memory usage?

前端 未结 3 1466
暖寄归人
暖寄归人 2020-12-06 04:30

I am automating some profiling tasks and want to log heap space and generation sizes real-time. The profiling API seems awfully complicated for what I need, and it seems to

相关标签:
3条回答
  • 2020-12-06 04:59

    There are performance counters for a lot of this stuff and if you can't use Perfmon, you can access counters through the Diagnostics API.

    0 讨论(0)
  • 2020-12-06 05:09

    Once I had to find a memory leak in a legacy code, I came accross this solution: Start "tasklist" with appropriate parameters as a process and read the output either from stream or from file.

    e.g.

    tasklist /fi "IMAGENAME eq notepad++.exe" /FO CSV /NH
    

    Output is:

    "notepad++.exe","7132","Console","1","21.004 K"
    

    Not that elegant, but works in any programming language on Windows without additional dependences (C++/Qt in my case).

    0 讨论(0)
  • 2020-12-06 05:16

    The term 'current memory usage' is a little loosely defined. Do you mean the working set? Whatever it means, you can use different properties such as VirtualMemorySize, WorkingSet, PrivateMemorySize, etc. from the process class to retrieve it.

    long workingSet = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
    
    0 讨论(0)
提交回复
热议问题