How do I see memory allocation in a given .NET app

2019-01-15 04:38发布

问题:

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.

回答1:

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.



回答2:

Does GC.GetTotalMemory do everything you need?

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