Let me start by clarifying what this question is NOT. It's not a request for an simple explanation of how Flash memory management or garbage collection works (reference counting, mark and sweep, etc.). Nor is it a request for tips for avoiding memory leaks (like recycling renders, weak references, removing event listener, IDispose pattern, stopping timers, avoiding static pointers and pointers from global object like stage, etc.)
Assume you have a reasonably large Flex program coded in MXML and Actionscript, and assume that it is coded by persons who are reasonably conversant in all of the above, and assume it STILL has a memory leak. At this point it is necessary to debug the problem, and the question is how to do it.
The Flash Builder Premium IDE can take a memory snapshot at time A and time B, and then compare the two snapshots, and then report on "loitering" objects. To use this, a program is run to a steady state (time A), then it is run some more (time B), and the implicit assumption is that the system should contain approximately the same objects - if it doesn't then the new ones are "loitering" (the memory leak). Conveniently, the IDE will provide a list of pointers leading to each loitering object.
But the IDE doesn't appear to provide the critically important information: which of those pointers are "locking" an object in memory and preventing garbage collection, vs. which are merely pointers from child objects (cycles) that should go away naturally if the object is collected. While the IDE does flag some pointers as "gcroot", anecdotally pointers from child objects are often (usually!) flagged as gcroot so this flag doesn't provide the necessary information. Since a reasonably sized program can have a LOT of objects, and since they can be connected in a complex graph via pointers, it is difficult to use the IDE to find which pointers are causing memory leaks.
Thus, my question is, does anyone have any tips (beyond what is already mentioned above) on how to find the cause of memory leaks in a Flex program implemented in Actionscript and MXML?