Heres one way, using the GC:
public void Test()
{
long kbAtExecution = GC.GetTotalMemory(false) / 1024;
// do stuff that uses memory here
long kbAfter1 = GC.GetTotalMemory(false) / 1024;
long kbAfter2 = GC.GetTotalMemory(true) / 1024;
Console.WriteLine(kbAtExecution + " Started with this kb.");
Console.WriteLine(kbAfter1 + " After the test.");
Console.WriteLine(kbAfter1 - kbAtExecution + " Amt. Added.");
Console.WriteLine(kbAfter2 + " Amt. After Collection");
Console.WriteLine(kbAfter2 - kbAfter1 + " Amt. Collected by GC.");
}
Or alternatively using System.Diagnostics.PerformanceCounter to get working set info:
PerformanceCounter performanceCounter = new PerformanceCounter();
performanceCounter.CategoryName = "Process";
performanceCounter.CounterName = "Working Set";
performanceCounter.InstanceName = Process.GetCurrentProcess().ProcessName;
Console.WriteLine(((uint)performanceCounter.NextValue()/1024).ToString("N0"));