title: .Net memory self-check
body: <p>There is some functions for unmanaged code, e.g. <code>HeapWalk</code> etc. Can I use it for managed heap or not? If not, how can i do it manualy? I don't mean any custom util like CLR Profiling API, but something simpler: can my app load itself list of its objects in some line?</p>
  
  <p>Theoreticaly, we have GC roots so i can pass through the object graph and enumerate objects. But GC have no methods or propertis, that allow an access to inner object graph. I can only call method to get total memory</p>
  
  <pre><code>long totalMemory = GC.GetTotalMemory(true);
  </code></pre>
  
  <p>but it give almost nothing.</p>