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

Dan*_*ain 6 .net c# memory-management

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

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

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

Mat*_*ock 8

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


And*_*are 5

你可以尝试GC.GetTotalMemory:

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

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

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