代码之家  ›  专栏  ›  技术社区  ›  Dan McClain

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

  •  6
  • Dan McClain  · 技术社区  · 17 年前


    Preventing Memory issues when handling large amounts of text

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

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

    4 回复  |  直到 9 年前
        1
  •  8
  •   Matt Wrock    17 年前
    长字节=System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
        2
  •  5
  •   Andrew Hare    17 年前

    你可以试试 GC.GetTotalMemory :

    检索字节数 目前被认为是被分配的。A. 参数指示此 方法可以等待很短的时间间隔 返回前,允许系统 收集垃圾并完成

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

    现在让我提供一个可能更有效的解决方案:使用 perfmon 和 CLR performance counters

        3
  •  3
  •   Stephane Grenier    17 年前

    您确实需要使用代码分析器。这些将准确地告诉你发生了什么,内存在哪里被用完,等等。

        4
  •  3
  •   Firoz    17 年前

    long bytes=System.Diagnostics.Process.GetCurrentProcess().WorkingSet64了解更多信息 See Here