programing

.NET에서 프로그래밍 방식으로 현재 프로세스의 총 메모리 사용량을 측정하는 방법은 무엇입니까?

copyandpastes 2021. 1. 14. 23:35
반응형

.NET에서 프로그래밍 방식으로 현재 프로세스의 총 메모리 사용량을 측정하는 방법은 무엇입니까?


.NET에서 프로그래밍 방식으로 현재 프로세스의 총 메모리 사용량을 측정하는 방법은 무엇입니까?


SO 질문을 참조하십시오

추가 시도

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

일부 고유 한 작업으로 인한 가상 메모리 사용량 증가 만 측정하려면 다음 패턴을 사용할 수 있습니다.

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있습니다. 사용 가능한 항목을 보려면 유형을 살펴보세요 .


PerformanceCounter 클래스-

http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx

그들 중 몇 가지가 있습니다-

http://msdn.microsoft.com/en-us/library/w8f5kw2e.aspx

다음은 CLR 메모리 카운터입니다.

http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx


나는 이것이 매우 유용하다는 것을 알았습니다.

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;

참조 URL : https://stackoverflow.com/questions/2342023/how-to-measure-the-total-memory-consumption-of-the-current-process-programmatica

반응형