views:

407

answers:

2

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.

+4  A: 

Does GC.GetTotalMemory do everything you need?

(Note that SizeOf only tells you the marshalled size, too - not necessarily the size in memory.)

Jon Skeet
Sweet. Do you also know know how to get the amount of instances of some particular class that has been instanciated as well?
Spoike
@Spoike: No, I don't believe that information is available without running under the profiling API.
Jon Skeet
+4  A: 

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.

GvS