> I'd like to be able to listen for them on the desktop as well.

You need to know a lot about the host system to know what "low memory"
even means.  Does it mean allocations may start failing soon?  Does it
mean we're deep into swap, causing serious performance issues but not
failed allocations?  Even that's hard to define; you can be using a
lot of swap, but it may be for entirely unused, idle background
applications and not indicate memory pressure at all.

This definitely seems useful on mobile platforms, where memory is much
more limited, memory management is much less complex, and being able
to deal reliably with memory limitations is a much more pressing
issue.  But on desktop platforms, even native applications written for
a specific platform run into trouble when they try to respond
"intelligently" to memory pressure, and the vast majority don't try.

On Sat, Jan 1, 2011 at 3:39 PM, Charles Pritchard <ch...@jumis.com> wrote:
> Here are some example implementations; it's up to the vendor, not the spec.
>
> Tabbed browsing implementation:
> Send a lowmemory event to hidden tabs listening (for lowmemory), that have
> not been visible for more than 60 seconds.
> (This is a partial example, as it doesn't detail when the tabs would be
> checked for visibility. )

An event like this needs to have a consistent meaning to allow
applications to respond meaningfully.  If it has varied meanings--or
if it has attributes to indicate each meaning, but they don't get
implemented in practice, or are too generic and don't accurately
describe the situation on each platform and configuration--then
applications can't respond correctly.

For example, responding to being an idle tab by releasing resources is
the wrong thing to do if there's plenty of memory available.  I have 8
GB of memory and Firefox rarely uses more than 512 MB.  Don't make me
wait for resources to be reloaded (or re-cached, or whatever the
resource is) because they were released "just in case".  I have lots
of memory precisely because I don't want to wait; I want applications
to cache as much as possible.  (The "tab visibility" proposal seems
more appropriate for this particular example, anyway.)

I'm not saying this is impossible, but memory management is
exceptionally complex, varies wildly across platforms, varies wildly
depending on how much memory and swap a system has, and on the
behavior of other applications on the system.  I'd be concerned about
a generic, loosely-defined "lowmemory" event with entirely unrelated
meanings encouraging developers to respond to it in ways that only
happen to make sense on the platform they're testing on.

-- 
Glenn Maynard

Reply via email to