Как измерить общее потребление памяти текущего процесса программно в .NET? - PullRequest
51 голосов
/ 26 февраля 2010

Как измерить общее потребление памяти текущим процессом в .NET?

Ответы [ 4 ]

51 голосов
/ 26 февраля 2010

См. Этот ТАК вопрос

Далее попробуйте это

Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
31 голосов
/ 26 февраля 2010

Если вы хотите измерить только увеличение, скажем, использования виртуальной памяти, вызванное некоторыми различными операциями, вы можете использовать следующую схему: -

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();

var before = System.Diagnostics.Process.GetCurrentProcess().VirtualMemorySize64;

// performs operations here

var after = System.Diagnostics.Process.GetCurrentProcess().VirtualMemorySize64;

Это, конечно, при условии, что ваше приложение не выполняет операции в других потоках во время выполнения вышеуказанных операций.

Вы можете заменить VirtualMemorySize64 на любой другой интересующий вас показатель. Посмотрите на тип System.Diagnostics.Process, чтобы увидеть, что доступно.

3 голосов
/ 26 февраля 2010
2 голосов
/ 22 марта 2010

Я нашел это очень полезным:

Thread.MemoryBarrier();
var initialMemory = System.GC.GetTotalMemory(true);
// body
var somethingThatConsumesMemory = Enumerable.Range(0, 100000)
    .ToArray();
// end
Thread.MemoryBarrier();
var finalMemory = System.GC.GetTotalMemory(true);
var consumption = finalMemory - initialMemory;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...