Using a PerformanceCounter , you can request "# Bytes in all heaps" from your own process and even other processes.
Use the .Net CLR Memory category to see the many counters available.
You should see the difference in system load between PerformanceCounter and GC.GetTotalMemory proposed by John Skeet.
source share