Check out CLR Profiler 2.0

FYI, in case you haven't heard from everybody else saying the same thing a month earlier, CLR Profiler for .NET 2.0 is available for free download here:

https://www.microsoft.com/downloads/details.aspx?FamilyId=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en
You can download it and immediately have it running in less than 3 minutes. Try it out on your favorite managed app.

This is a great tool for analyzing you .NET app's memory usage. It will show you things like:
- how many bytes of each object is allocated.
- who allocated it.
- how many GC handles are there?
- call graphs
- 100 page doc!
And this is all exposed through a nice winforms front-end with good context menus. And it even includes the source and the VS solution to build it.

 

Profiling is outside my area of expertise, but if you're interested in the technical background of profilers on .NET, check out these bloggers:
- David Broman (Profiler API developer): https://blogs.msdn.com/davbr
- Jonathan Keljo (Profiler API PM): https://blogs.msdn.com/jkeljo
- Rico (Performance super-guru): https://blogs.msdn.com/ricom
- Maoni (GC dev, which is very related to perf): https://blogs.msdn.com/maoni

This is a nice MSDN article about Profiling API updates for V2: https://msdn.microsoft.com/msdnmag/issues/05/01/CLRProfiler/default.aspx

And here's a Comparison between the CLR's Debugging and Profiling APIs: https://blogs.msdn.com/jmstall/archive/2004/10/22/246151.aspx.