可能重复:
如何获得可用内存或在C#中使用
我想想象这是在我的应用程序的状态栏使用我的应用程序的内存。 我正在寻找一个memoryleak - 但我不知道在哪里。 现在,我的想法是可视化使用的内存在状态,这样我可以看到它,而我在使用应用程序,并找到部分,发生问题,然后我可以剖析这一点。
有人可以给我一些帮助,我怎样才能使用的内存。
可能重复:
如何获得可用内存或在C#中使用
我想想象这是在我的应用程序的状态栏使用我的应用程序的内存。 我正在寻找一个memoryleak - 但我不知道在哪里。 现在,我的想法是可视化使用的内存在状态,这样我可以看到它,而我在使用应用程序,并找到部分,发生问题,然后我可以剖析这一点。
有人可以给我一些帮助,我怎样才能使用的内存。
您可以使用下面的函数(真正的参数告诉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命名空间中的类来访问他们的数据。 见这个例子: https://weblog.west-wind.com/posts/2014/Sep/27/Capturing-Performance-Counter-Data-for-a-Process-by-Process-Id
为什么不直接监视与任务管理器或从更高级的工具内存使用Sysinternals的 ,而且在您确定哪些工作流异常引发的内存使用情况,然后配置文件与CLR探查器或其它应用程序。