Я пытаюсь получить достоверную информацию о том, когда моему приложению C# (Windows XP) не хватит памяти. Я провел некоторые исследования и тесты на своей машине и выбрал самые надежные счетчики perfmon:
Memory.Pages Output/sec
Memory.Available Bytes
Я использую пороги и оператор AND, и это работает достаточно хорошо, но на клиентской машине (тоже Windows XP) оба счетчика бесполезны. Доступная память не опускается ниже 1 ГБ, а вывод страниц постоянно равен нулю. Прочитав некоторые журналы, я все еще не вижу полезного счетчика.
Счетчики, такие как выделенная память, дают правильное значение, но программе не хватает памяти (с подкачкой страниц, снижающей производительность) после пересечения 50%-60% доступных 5 ГБ.
Любые альтернативы? Я бы не хотел, чтобы меня заставляли пытаться выделять память и ловить исключения OutOfMemory во время вычислений.