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

本文关键字:内存 应用程序 何获取 获取 | 更新日期: 2023-09-27 17:49:25

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

我想在应用程序的状态栏中显示应用程序使用的内存。我正在寻找一个备忘录泄漏,但我不知道在哪里。现在,我的想法是在状态栏中可视化使用过的内存,这样我就可以在使用应用程序时看到它,并找到出现问题的部分,然后我可以对此进行分析。

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

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

您可以使用以下函数(真正的参数告诉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

为什么不使用TaskManager或Sysinternals的更高级工具来监控内存使用情况,并且只有在您确定了哪些工作流异常增加了内存使用情况之后,才使用CLR Profiler或其他工具来评测应用程序。