Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Обратитесь к этому вопросу fooobar.com/questions/134800/...

Попробуйте это

Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;

Ответ 2

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

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, чтобы узнать, что доступно.

Ответ 4

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

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;