Почему perfmon не дает доступной памяти и каковы альтернативы?

Я пытаюсь получить достоверную информацию о том, когда моему приложению C# (Windows XP) не хватит памяти. Я провел некоторые исследования и тесты на своей машине и выбрал самые надежные счетчики perfmon:

Memory.Pages Output/sec
Memory.Available Bytes

Я использую пороги и оператор AND, и это работает достаточно хорошо, но на клиентской машине (тоже Windows XP) оба счетчика бесполезны. Доступная память не опускается ниже 1 ГБ, а вывод страниц постоянно равен нулю. Прочитав некоторые журналы, я все еще не вижу полезного счетчика.
Счетчики, такие как выделенная память, дают правильное значение, но программе не хватает памяти (с подкачкой страниц, снижающей производительность) после пересечения 50%-60% доступных 5 ГБ.

Любые альтернативы? Я бы не хотел, чтобы меня заставляли пытаться выделять память и ловить исключения OutOfMemory во время вычислений.


person kelebron    schedule 04.01.2009    source источник


Ответы (1)


См. Когда процессу Windows не хватает памяти?

Короче говоря, вы хотите проверять частные байты, виртуальные байты и/или рабочий набор для вашего процесса (процессов).

person Patrick Cuff    schedule 04.01.2009
comment
Статьи по ссылке были ОЧЕНЬ полезными. Самое важное, что я узнал, это то, что я должен резервировать необходимую память один раз в начале вычислений. Я могу легко поймать OutOfMemory там. С другой стороны, я до сих пор не знаю, как получить количество памяти, оставшееся от perfmon. - person kelebron; 10.01.2009