问题
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.)
来源:https://stackoverflow.com/questions/625465/how-do-i-see-memory-allocation-in-a-given-net-application