[whatwg] Proposal for separating script downloads and execution
Kyle Simpson
getify at gmail.com
Thu Feb 17 09:23:12 PST 2011
>> I dunno if
>> I'd call that a "memory leak" as much as I'd call it a "higher memory
>> utilization", or maybe "potential memory waste".
>
> Most users will call continuously increasing memory (which is what you'd
> get if a page creates script elements, sets src, and then doesn't insert
> them, perhaps by accident) a memory leak.
In my experience, the term memory-leak (both in the IE sense and in the
C-programming sense) is not about continuously increasing, even run-away
memory usage, so much as it is that memory gets into a state where it cannot
be re-claimed. I don't see you saying that this memory usage would be of
that type, so I still don't think it's right to call it a "leak" as much as
a "non-release (yet)". But that's probably just a side semantics issue. You
say "tomato", I say "tomato".
>> or is it a lot more? Compared to the 100-300
>> MB of memory that a Firefox instance takes up on my computer, what
>> percentage of that would be (or would be increased) if Firefox were also
>> holding onto even a large amount (~200k) of not-yet-used JavaScript code
>> in memory?
>
> My worries are cases where a page inadvertently makes you hold on to tens
> or hundreds of megabytes of js, not about the 200k case.
Do you have any example where hundreds of megabytes of JavaScript is being
loaded onto pages? Even "tens of megabytes" seems quite extraordinary. I
believe I recall reading somewhere that the average amount of JavaScript on
the Alexa 200,000 is like 375k. I think the most I've ever personally seen
is around 2-5 MB. Even if we factor in long-running pages (like Gmail, for
instance), I can't fathom that during the course of the page lifetime, all 5
MB of JavaScript code is being re-downloaded fresh, every few minutes or
hours, in which case a run-away scenario of "hundreds of megabytes" might
occur. Even then, it would only occur if that site were re-downloading their
entire code again, over and over, but never using it. That would be bizarre,
indeed.
And not only would it be bizarre if that were happening by design, but it'd
be bizarre if it was just a random flaw in their software, which for all
other browsers didn't bite them but somehow they avoided that flaw in IE,
where it should be killing them.
> I think you understimate how often scripts just have bugs in them. I'm
> not saying someone would create a few million nodes and then not insert
> them in the DOM because they're _trying_ to do something dumb. But that
> sort of thing scripts do all the time.
>
> You're assuming scripts mean to do everything they do. That's not a good
> assumption, unfortunately.
Here's what I'm assuming: more than not, this feature will be used
appropriately. That's not an exclusive thing that ignores mistakes or bugs.
But the nature of what we're suggesting is not quite as likely to be
accidentally happening as many other potential features we might discuss for
HTML.
I haven't seen any examples of existing sites where the "millions of script
nodes" phenomena is happening right now, which would be potential landmines
for this newly suggested "preloading" functionality. The fear of it being
theoretically possible seems much more intense than any evidence or logical
reasoning for it being probable.
I also am on record as saying that I think it's a bad idea to avoid a useful
(to some) feature for fears that others (probably the minority) will abuse
or misuse it. That's why we have technical/performance evangelism. That's
one way the open-source community is so vibrant. In fact, that's why Firefox
was able to contact several different websites which broke as a result of
the whole "async=false" thing, and re-educate them on how to properly
proceed. To my knowledge, that process worked ok, and I think it's a decent
model for going forward.
Unless someone can show that the majority of sites (or even just something
greater than a tiny fraction) are going to choke. And if that can be shown,
I welcome it. But I'd also be extremely curious as to how those same sites
are (probably) surviving fine in IE, which has been doing this preloading
for a decade or more. It's I guess possible, but I'd highly doubt, that
there are sites which, only for IE, are intentionally avoiding preloading by
not creating script nodes, whereas they happily queue up "millions of nodes"
in all the other browsers.
--Kyle
More information about the whatwg
mailing list