Как программно получить общий объем выделенной памяти приложением (ASP) .NET? - PullRequest
3 голосов
/ 17 января 2009

Как программно проверить, сколько памяти выделено моей программе в данный момент?

Мне это нужно для приложения ASP .NET, но я подозреваю, что решение является общим для всех типов приложений .NET. В идеале операция, чтобы получить выделенный в настоящее время объем памяти, должна быть быстрой, поскольку мне нужно будет часто запрашивать ее.

EDIT: Спасибо за ваши ответы. Я буду использовать GC.GetTotalMemory для этой задачи, так как мне нужно использовать его для приложения ASP .NET. После некоторых экспериментов я решил, что это достаточно быстро и точно для моих нужд. Предложение использовать свойство PrivateMemorySize64 Process также будет работать в целом; но, как указано в ответах, для приложения ASP.NET часто будет несколько доменов приложений, запущенных в одном процессе. Мне нужен общий объем памяти для каждого домена приложений.

Ответы [ 3 ]

6 голосов
/ 17 января 2009

Существует метод GC.GetTotalMemory , но это только приблизительное значение. Этого достаточно?

Если вы позвоните с GC.GetTotalMemory(false), это будет быстрее ...

2 голосов
/ 17 января 2009

И также обратите внимание, что для asp.net очень распространено иметь более одного приложения в одном процессе. Так что это ограничивает полезность PrivateMemorySize64. GC.GetTotalMemory для каждого домена приложения afaik.

1 голос
/ 17 января 2009

Вы также можете вызвать PrivateMemorySize64 (или Virtual, если хотите) из класса Process . Однако следует помнить, что числа кэшируются и обновляются только при вызове команды Обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...