[whatwg] Canvas 2D memory management

Robert O'Callahan robert at ocallahan.org
Fri Jan 11 14:36:00 PST 2013

On Sat, Jan 12, 2013 at 6:41 AM, Rik Cabanier <cabanier at gmail.com> wrote:

> Some of you concerns with memory management could be addressed with
> WeakMaps.
> Basically, you can put all your images in a WeakMap and during the draw
> cycle, you pull them out and use them. If they're no longer there, it meant
> that the garbage collector has kicked in to free up memory and you need to
> reload (which will unfortunately cause a jank). I'm unsure how smart the
> garbage collector is because you probably want the items in the WeakMaps to
> be deleted last.

WeakMaps don't work like that. You can only test whether something is in a
WeakMap by looking it up with a key object. If the key object stays alive
and the WeakMap stays alive, then the value must also stay alive. On other
hand, if the key object or the WeakMap have been collected, obviously you
can't do the lookup. So you can't observe whether GC has happened using a
WeakMap. (This is by design.)

Jesus called them together and said, “You know that the rulers of the
Gentiles lord it over them, and their high officials exercise authority
over them. Not so with you. Instead, whoever wants to become great among
you must be your servant, and whoever wants to be first must be your
slave — just
as the Son of Man did not come to be served, but to serve, and to give his
life as a ransom for many.” [Matthew 20:25-28]

More information about the whatwg mailing list