[whatwg] Low Memory Event

Charles Pritchard chuck at jumis.com
Fri Jan 7 16:16:30 PST 2011

> Date: Sun, 02 Jan 2011 04:59:14 -0600 From: Boris Zbarsky 
> <bzbarsky at MIT.EDU> On 1/1/11 6:53 PM, Charles Pritchard wrote:
>> >  ArrayBuffer and Canvas use contiguous memory segments. You don't need a
>> >  complex GC pass to let those ones go.
> Yes, you do.  You can't let go of the canvas buffer without letting go
> of the canvas rendering contexts and canvas elements referencing it.
> And those used to be referenced from JS, so the only way they can go
> away is via a GC.
> Similar for ArrayBuffer: the memory segment is owned by various
> garbage-collected objects, and can't go away until they do.
With canvas, you can just set  canvas.width = 1; to let the memory go, 
without a complex GC.
canvas.width = 1 can be used to quickly release several megs of ram.

On that note, a method of invalidating ArrayBufferView and 
CanvasPixelArray would be helpful in the future.
Maybe that's something we could talk about, as we discuss the 
feasibility of responding to lowmemory events.

Here's a thread considering .close() as an invalidate method name:

And here's a quick attempt at example, on my part:

el.onclick = function() {
// imageData.data[0] = 0; now throws INVALID_STATE_ERR from this thread

.close() signals to postMessage to use a pointer, instead of cloning the 

More information about the whatwg mailing list