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

与我之前的问题相关:
处理大量文本时防止内存问题

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

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

您可以尝试GC.GetTotalMemory

检索当前认为要分配的字节数。 参数指示此方法是否可以在返回之前等待一小段时间,以允许系统收集垃圾并完成对象。

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

编辑:现在让我提供一个可能更高效的不同解决方案:使用perfmon和CLR性能计数器 。

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

你真的需要使用代码Profiler。 这些将告诉您到底发生了什么,内存耗尽等等。

仅供参考:你认为它很少。

long bytes = System.Diagnostics.Process.GetCurrentProcess()。WorkingSet64更多请参阅此处