可能重复:
How to get memory available or used in C#如何获得的内存应用程序使用量
我要想象这是在我的应用程序的状态栏使用我的应用程序的内存。我正在寻找一种记忆缺失 - 但我不知道在哪里。现在,我的想法是在状态栏中可视化已用过的内存,以便在使用应用程序并查找出现问题的部分时可以看到它,然后我可以对此进行分析。
有人可以给我一些帮助,我怎么能得到使用过的内存。
可能重复:
How to get memory available or used in C#如何获得的内存应用程序使用量
我要想象这是在我的应用程序的状态栏使用我的应用程序的内存。我正在寻找一种记忆缺失 - 但我不知道在哪里。现在,我的想法是在状态栏中可视化已用过的内存,以便在使用应用程序并查找出现问题的部分时可以看到它,然后我可以对此进行分析。
有人可以给我一些帮助,我怎么能得到使用过的内存。
您可以使用下面的函数(真正的参数告诉GC进行收集第一):
long memory = GC.GetTotalMemory(true);
为什么不直接监视与任务管理器或与Sysinternals,只有更先进的工具,内存使用情况在确定什么工作流异常提升了内存使用量后,使用CLR Profiler或其他方法对应用程序进行分析。
您可以尝试GC.GetTotalMemory
:
据检索当前认为是分配的字节数。参数指示此方法是否可以在返回之前等待短间隔>以允许系统收集垃圾并最终化>对象。
或
using System.Diagnostics;
Process currentProc = Process.GetCurrentProcess();
一旦你到当前进程的引用,你可以通过阅读PrivateMemorySize64属性决定了其内存使用情况。
long memoryUsed = currentProc.PrivateMemorySize64;
它们是否一样? – mcmillab
如果要监视应用程序使用的内存,则无需为此编写代码。只需使用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
正如在重复中提到的,要小心:这个解决方案只查看托管堆。要获得完整的工艺尺寸,请参阅:https://stackoverflow.com/a/750595/331281 – Dejan