 <p>There are free tools available to look at the managed heap in .Net, using the <a href="http://www.stevestechspot.com/SOSEXANewDebuggingExtensionForManagedCode.aspx" rel="nofollow noreferrer">SOSEX</a> extensions to <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" rel="nofollow noreferrer">WinDBG</a> and <a href="http://msdn.microsoft.com/en-gb/magazine/cc164138.aspx" rel="nofollow noreferrer">SOS</a>, it is possible to run a program, pause it, then look at which objects exist on the stack and (more importantly) which other objects are holding references to them (roots) which will be preventing the the GC from collecting them.</p>