.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メモリカウンターは次のとおりです-
私はこれが非常に便利だと感じました:
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;