C# 如何获取应用程序使用的内存量

C# 如何获取应用程序使用的内存量,c#,memory-management,memory-leaks,C#,Memory Management,Memory Leaks,可能重复: 我想在应用程序的状态栏中显示应用程序使用的内存。我正在寻找一个记忆袋,但我不知道在哪里。现在,我的想法是在状态栏中可视化已使用的内存,以便在使用应用程序时可以看到它,并找到出现问题的部分,然后可以对此进行分析 有人能给我一些帮助吗,我如何获得已使用的内存。您可以使用以下函数(true参数告诉GC首先执行收集): 为什么不使用TaskManager或更高级的工具来监视内存使用情况,并且只有在确定哪些工作流异常提高内存使用情况后,才使用CLR Profiler或其他工具来分析应用程序。

可能重复:

我想在应用程序的状态栏中显示应用程序使用的内存。我正在寻找一个记忆袋,但我不知道在哪里。现在,我的想法是在状态栏中可视化已使用的内存,以便在使用应用程序时可以看到它,并找到出现问题的部分,然后可以对此进行分析


有人能给我一些帮助吗,我如何获得已使用的内存。

您可以使用以下函数(true参数告诉GC首先执行收集):


为什么不使用TaskManager或更高级的工具来监视内存使用情况,并且只有在确定哪些工作流异常提高内存使用情况后,才使用CLR Profiler或其他工具来分析应用程序。

您可以尝试
GC。GetTotalMemory

它检索当前认为要分配的字节数。一个参数指示此方法是否可以在返回之前等待一段短时间间隔>,以允许系统收集垃圾并完成>对象


一旦有了对当前进程的引用,就可以通过读取PrivateMemorySize64属性来确定其内存使用情况

long memoryUsed = currentProc.PrivateMemorySize64;

如果希望监视应用程序使用的内存,则无需为此编写代码。只需使用Windows()中的性能计数器即可。他们会用图表提供你需要的信息!有很多内存计数器(),其中一个会有你需要的数据,我想它会帮助你发现你的应用程序何时开始使用比它应该使用的更多的内存


但是,如果确实需要将此信息放入应用程序中,您仍然可以使用性能计数器。NET在System.Diagnostics命名空间中有类来访问其数据。请参见此示例:

它们是否相同?如副本中所述,请注意:此解决方案仅查看托管堆。要获得完整的进程大小,请参阅:GeekMedia链接不再可用。我更改了示例@MichaelFredgeim,谢谢。要做到这一点,我需要访问客户端的计算机,但我不需要。我需要一种方法来收集这些数据并以
log.txt
的形式发送回服务器
using System.Diagnostics;

Process currentProc = Process.GetCurrentProcess();
long memoryUsed = currentProc.PrivateMemorySize64;