与我之前的问题相关:
的 Preventing Memory issues when handling large amounts of text
有没有办法确定我的程序占用多少内存空间?我最终处理了大量的文本文件,并且通常将处理过的对象存储在内存中。有时会有太多的信息,我会耗尽内存。我有一个避免内存分配问题的解决方案,但我只想在必要时使用它,以避免分页,这将最终降低我的性能,如果没有必要。有没有办法弄清楚我占用了多少内存,以便我只能在必要时才能分页?
注意:我正在寻找一个解决方案,我的程序可以在必要时使用它来开始分页。
答案 0 :(得分:8)
long bytes = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
答案 1 :(得分:5)
您可以尝试GC.GetTotalMemory
:
检索字节数 目前认为是分配。一个 参数表明是否这样 方法可以等待一小段时间 在返回之前,允许系统 收集垃圾并最终确定 对象。
需要注意的重要一点是:“检索当前认为要分配的字节数”。这意味着此方法可能不是100%准确 - 只要您知道这一点,您就应该能够大致了解应用程序执行中给定点的虚拟内存利用率。
修改:现在让我提供一个可能提高效率的不同解决方案:使用perfmon
和CLR performance counters。
答案 2 :(得分:3)
您确实需要使用代码Profiler。这些将告诉你究竟发生了什么,内存耗尽等等。
仅供参考:你很少想到它。
答案 3 :(得分:3)
long bytes = System.Diagnostics.Process.GetCurrentProcess()。WorkingSet64 for more See Here