반응형
.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;
반응형
'programing' 카테고리의 다른 글
교차 플랫폼 개행 문자와 일치하는 정규식 (0) | 2021.01.14 |
---|---|
Firefox 및 Chrome은 localhost에서 느립니다. (0) | 2021.01.14 |
Ruby-on-Rails : 다중 has_many : through 가능? (0) | 2021.01.14 |
"활성화 / 비활성화"라는 단어는 무엇입니까? (0) | 2021.01.14 |
belongs_to 다형성과 함께 accepts_nested_attributes_for (0) | 2021.01.14 |