我正在尝试获取有关何时我的C#应用程序(Windows XP)内存不足的可靠信息。我在我的机器上进行了一些研究和测试,并选择了最可靠的 perfmon 计数器:
Memory.Pages Output/sec
Memory.Available Bytes
我使用阈值和AND运算符,它运行良好,但在客户端计算机(也是Windows XP)上,两个计数器都没用。可用内存不低于1GB,页面输出恒定为零。看完一些日志后,我仍然没有看到任何有用的计数器。
像已提交的内存这样的计数器给出了正确的值,但是在超过5GB可用空间的50%-60%之后,程序内存耗尽(分页会导致性能下降)。
任何替代方案?我不想在计算过程中被迫尝试分配内存并捕获OutOfMemory异常。
答案 0 :(得分:0)
请参阅When does a Windows process run out of memory?
简而言之,您希望为您的流程检查私有字节,虚拟字节和/或工作集。