[whatwg] Canvas 2D memory management

Ian Hickson ian at hixie.ch
Thu Jul 18 09:50:06 PDT 2013

On Wed, 9 Jan 2013, Ashley Gullen wrote:
> Some developers are starting to design large scale games using our HTML5 
> game engine, and we're finding we're running in to memory management 
> issues.  Consider a device with 50mb of texture memory available.  A 
> game might contain 100mb of texture assets, but only use a maximum of 
> 30mb of them at a time (e.g. if there are three levels each using 30mb 
> of different assets, and a menu that uses 10mb of assets).  This game 
> ought to fit in memory at all times, but if a user agent is not smart 
> about how image loading is handled, it could run out of memory.
> [...]
> Some ideas:
> 1) add new functions to the canvas 2D context, such as:
> ctx.load(image): cache an image in memory so it can be immediately drawn
> when drawImage() is first used
> ctx.unload(image): release the image from memory

The Web API tries to use garbage collection for this; the idea being that 
you load the images you need when you need them, then discard then when 
you're done, and the memory gets reclaimed when possible.

We could introduce a mechanism to flush ImageBitmap objects more forcibly, 
e.g. imageBitmap.discard(). This would be a pretty new thing, though. Are 
there any browser vendors who have opinions about this?

We should probably wait to see if people are able to use ImageBitmap with 
garbage collection first. Note, though, that ImageBitmap doesn't really 
add anything you couldn't do with <img> before, in the non-Worker case. 
That is, you could just create <img> elements then lose references to them 
when you wanted them GC'ed; if that isn't working today, I don't see why 
it would start working with ImageBitmap.

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list