I need to check how much memory is allocated in the heap. Is there a way to get this value programmatically with C#?
I know about the System.Runtime.InteropServices.Marshal.SizeOf(...)
but that only tells me the size of an object.
I need to check how much memory is allocated in the heap. Is there a way to get this value programmatically with C#?
I know about the System.Runtime.InteropServices.Marshal.SizeOf(...)
but that only tells me the size of an object.
Does GC.GetTotalMemory
do everything you need?
(Note that SizeOf
only tells you the marshalled size, too - not necessarily the size in memory.)
Using a PerformanceCounter you can query the "# Bytes in all Heaps", from your own process, and even other processes.
Use the Category ".Net CLR Memory" to see a lot of counters available.
You have to see what the difference in system load is between the PerformanceCounter and the GC.GetTotalMemory that is proposed by Jon Skeet.