如何确定程序当前占用的内存量

时间:2009-09-17 19:00:09

标签: c# .net memory-management

  

与我之前的问题相关:
  的 Preventing Memory issues when handling large amounts of text

有没有办法确定我的程序占用多少内存空间?我最终处理了大量的文本文件,并且通常将处理过的对象存储在内存中。有时会有太多的信息,我会耗尽内存。我有一个避免内存分配问题的解决方案,但我只想在必要时使用它,以避免分页,这将最终降低我的性能,如果没有必要。有没有办法弄清楚我占用了多少内存,以便我只能在必要时才能分页?

注意:我正在寻找一个解决方案,我的程序可以在必要时使用它来开始分页。

4 个答案:

答案 0 :(得分:8)

long bytes = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;

答案 1 :(得分:5)

您可以尝试GC.GetTotalMemory

  

检索字节数   目前认为是分配。一个   参数表明是否这样   方法可以等待一小段时间   在返回之前,允许系统   收集垃圾并最终确定   对象。

需要注意的重要一点是:“检索当前认为要分配的字节数。这意味着此方法可能不是100%准确 - 只要您知道这一点,您就应该能够大致了解应用程序执行中给定点的虚拟内存利用率。

修改:现在让我提供一个可能提高效率的不同解决方案:使用perfmonCLR performance counters

答案 2 :(得分:3)

您确实需要使用代码Profiler。这些将告诉你究竟发生了什么,内存耗尽等等。

仅供参考:你很少想到它。

答案 3 :(得分:3)

long bytes = System.Diagnostics.Process.GetCurrentProcess()。WorkingSet64 for more See Here