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

可能重复:
如何在C#中获取或使用内存

我想在我的应用程序的状态栏中可视化我的应用程序使用的内存。 我正在寻找记忆漏洞 – 但我不知道在哪里。 现在,我的想法是在状态栏中可视化使用的内存,以便在我使用应用程序时找到它,找到问题发生的部分,然后我可以对其进行分析。

有人可以给我一些帮助,我怎样才能得到用过的记忆。

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

long memory = GC.GetTotalMemory(true); 

您可以尝试GC.GetTotalMemory

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


要么

 using System.Diagnostics; Process currentProc = Process.GetCurrentProcess(); 

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

 long memoryUsed = currentProc.PrivateMemorySize64; 

如果要监视应用程序使用的内存,则无需为此编写代码。 只需使用Windows中的性能计数器( http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters )。 他们将通过图表提供您需要的信息! 有很多内存计数器( http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx ),其中一个将拥有您需要的数据,我想它会帮助您找出何时应用程序开始使用更多的内存。

但是,如果您确实需要将此信息放在应用程序中,则仍可以使用性能计数器。 .NET在System.Diagnostics命名空间中具有访问其数据的类。 请参阅此示例: http : //www.geekpedia.com/tutorial211_Using-Performance-Counters-in-Csharp.html

为什么不直接使用TaskManager或使用Sysinternals中的更高级工具来监视内存使用情况,并且只有在确定哪个工作流exception提高内存使用率之后才能使用CLR Profiler或其他工具来分析应用程序。