Spoike
Spoike

Reputation: 121742

How do I see memory allocation in a given .NET application?

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.

Upvotes: 4

Views: 2755

Answers (2)

GvS
GvS

Reputation: 52518

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.

Upvotes: 5

Jon Skeet
Jon Skeet

Reputation: 1499840

Does GC.GetTotalMemory do everything you need?

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

Upvotes: 4

Related Questions