Juan Pablo Califano wrote:

> The mere fact that the
> memory footprint grows doesn't mean there's a leak.

Juan Pablo is correct, and it's important to understand why. (If you already
understand garbage collection, you need read no further, unless you want to
check the accuracy of my description :-)

As you create objects, or even variables, the Flash player allocates
memory--this is common to most runtime engines/virtual machines, including
Shockwave, C#, Java, Visual Basic (I think), and all the way back to UCSD
Pascal.

When you delete an object, or a variable goes out of scope, that memory is
no longer needed, and the Flash player notes that it is available for
re-use. It does not, however, immediately re-use the memory--in fact, it
probably doesn't even zero it out right away. The data are still there, but
the memory is marked as available.

These memory blocks are often not contiguous--your memory looks something
like a fragmented hard disk. You have a few bytes here, a couple K bytes
there. When the Flash player's memory gets too fragmented, it does a
"garbage collection". That is, it moves currently-valid objects and
variables around to make everything contiguous (un-fragmented) again. It's
much like defragmenting your hard drive, except it is done in RAM (or
virtual RAM).

The browser is probably doing the same thing. If the user has navigated away
from your Flash page, it doesn't necessarily free that memory immediately.
In fact, it probably won't, so you can still navigate forwards and
backwards.

It's sort of like deleting a file on your disk used to be. I think it's
handled differently now, but in the bad old days, the OS would simply write
a special character into the first byte of the file. There were utilities we
used to recover accidentally deleted files--we could explore the disk, find
the data, change the first byte back to what it was supposed to be, and the
file was restored. (That's somewhat simplified, but it's the right concept).

HTH.

Cordially,

Kerry Thompson

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to