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

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

53
задан Cœur 10 April 2017 в 06:34
поделиться

4 ответа

Обратитесь к этому SO вопрос

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

Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
53
ответ дан 7 November 2019 в 08:43
поделиться

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

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

32
ответ дан 7 November 2019 в 08:43
поделиться
3
ответ дан 7 November 2019 в 08:43
поделиться

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

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;
2
ответ дан 7 November 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: