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