On 2011-01-02 03:27, Kornel Lesiński wrote:
On Sun, 02 Jan 2011 00:53:48 -0000, Charles Pritchard <ch...@jumis.com> wrote:

ArrayBuffer and Canvas use contiguous memory segments. You don't need a complex GC pass to let those ones go.
For my use cases, those are the two types I'm working with.

Keeping them around helps the speed of my app, letting them go
cuts down on memory usage.

Maybe better solution would be to add "purgeable" flag to canvas (i.e. allow browser to clear canvas at any time) or some way to create/mark weak references? (i.e. a reference to object that can be changed to null if browser is in low-memory situation).

Although, I'm not convinced that handling of low memory in JS is necessary. Browsers already have some ways to free memory, e.g. by freeing all bitmaps for <img> or simply by unloading whole pages.

Amount of available memory, even on mobile devices, increases dramatically each year. It's possible that by the time this feature gets specified, implemented, released and installed on significant number of devices it will be irrelevant. On my desktop computer I often have 100 tabs open and memory is not an issue, and my mobile phone has 1/16th of that RAM already.


I think this is starting to get off topic, as we're now into OS memory allocation territory. If the browser is told by the OS or the browser "feels" it need to conserve memory it can do whatever it pleases, OS stability trumphs web page/app/script/whatever, and should always do so.

Charles, you initially said you where worried about this since you used undo buffers. Why not simply add undo buffers to the Canvas spec? That way the browser can start tossing away the oldest undo buffers automatically when it starts getting memory anorexic. And depending on the browser implementation and the OS and hardware support, on some systems the Canvas undo buffers could even be in graphics memory. It's wrong for Canvas to have undo stuff in active memory, most graphics programs store the undo on disk or it's paged out to a swapfile at the least. So if you have to make your own undo buffers for Canvas, then I'd say that Canvas is lacking and might need undo buffers as part of it's spec.


--
Roger "Rescator" Hågensen.
Freelancer - http://www.EmSai.net/

Reply via email to