One principle of Debugger's design is that its behavior should not be affected
by the garbage collector. Like the rest of JavaScript, the programmer should be
able to assume that objects have infinite lifetimes, and that the garbage
collector recycles objects only when doing so would have no visible effect on
the execution of the program. (Methods like findScripts and findObjects that
scan the heap are exceptions; their behavior is sensitive to the garbage
collector's activity—and cause plenty of trouble because of it.)
There is also a complementary principle, which is that Debugger should not
impede the garbage collector's work more than necessary. For example, if the