We have a fairly high volume ASP.Net site written in c# using MS commerce server, running in a 32-bit environment. I see the worker process up to 980 megabytes quite often.
http://www.jetbrains.com/profiler/
Something like ANTS memory profiler might be useful to you.
ANTS Profiler is very good at profiling ASP.NET applications.
We use AviCode, and it works pretty good for us.
Also consider AQTime from Automated QA.
There's a free way.
AFAIK, the above requires Visual Studio "Ultimate" edition (I guess its called "Enterprise" now?). If you don't have one, then follow these steps (very simple too)
.loadby sos clr
(this will load SOS.dll that allows WinDbg to analyze .NET processes, SOS.dll is a part of NET Framework so you probably already have it)!dumpheap -stat
(this will output the class names, sorted by memory usage, ascending order. Skip system.string
and system.byte[]
classes cause these are side-effects, not the cause...)UPDATE FROM 2019: WinDbg is now available via MS Store, just search for "WinDbg", then couple of clicks and its there.