After much messing around, I've come to the conclusion Drip is indeed
flawed. If the Explorer toolbar is returning the same results, I can
only assume it's also broken.

I wondered if maybe IE8 was just better at finding these leaks, but in
IE6 and IE7 they also don't seem to exist.

Using a script similar to Henry's, in Drip the memory shot up and I
ran out of memory in around 2 minutes. Running the same page in IE8
itself didn't affect memory *at all*. No matter how long I left it, it
never went up.

I tried the same thing on another PC using IE6, and got the same
results.

This is quite frustrating, because now we have to find real leaks
within a huge list of fake leaks that Drip (or the IE toolbar)
reports :-(


On Apr 22, 8:38 pm, Brandon Aaron <brandon.aa...@gmail.com> wrote:
> Ahh, thanks. Okay I see the other leaks with this toolbar. I still don't see
> the leaks in IE6 though. There are a few other places that we need to null
> out some orphaned node references. Couple in Sizzle and a couple in offset.
> Should have a patch soon.
> --
> Brandon Aaron
>
>
>
> On Wed, Apr 22, 2009 at 1:48 PM, pete higgins <phigg...@gmail.com> wrote:
>
> > We stumbled upon this:
>
> >http://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector.aspx
>
> > It seems to be reporting the same type information Drip is. I cannot
> > attest to it's accuracy, but it claims as of trunk (it is still in
> > svn, right?) [6319] I see "leaked" elements listed:
>
> > <div>
> > <script>
> > <div>
> > +  <a>
> > <html>
> > + <div>
>
> > (the + is to indicate [i presume] the leaked node is within some other
> > node?)
>
> > My testcase is:
>
> > <html><head>
> >        <script src="jquery.min.js"></script><title>yo</title>
> > </head>
> > <body><h1>hi</h1></body></html>
>
> > Prior to svn up'ing just now, It was leaking the "full list" the original
> > post.
>
> > Also, unless I'm missing something, I am seeing 91 IE6 unit tests
> > failures in tests/
>
> > Regards,
> > Peter
>
> > On Wed, Apr 22, 2009 at 12:32 PM, Danny Tuppeny <danny.tupp...@gmail.com>
> > wrote:
>
> > > Thanks for the response Henry. I was wondering myself if pseudo-leaks
> > > were being misreported, but I didn't get chance today to test this
> > > outside of Drip.
>
> > > I'll see if I can reproduce this outside Drip using TaskManager and if
> > > I can still reproduce, I'll post a new thread with a test case and
> > > more details.
>
> > > On Apr 22, 1:47 pm, Henry <rcornf...@raindrop.co.uk> wrote:
> > >> On Apr 22, 9:01 am, Danny Tuppeny wrote:
>
> > >> > Here's a small sample page that seems to leak in the same
> > >> > way as jQuery:
>
> > >> > <html><head><script type="text/javascript">
> > >> > function leakMe() {
> > >> >         var div = document.createElement("div");
> > >> >         document.body.appendChild(div);
> > >> >         document.body.removeChild(div);}
>
> > >> > </script></head><body onload="leakMe();"></body></html>
>
> > >> > The docs for Drip say that removeChild is just a psuedo-leak
> > >> > and will be cleaned up when the page is unloaded, but that
> > >> > doesn't happen. If you set the above page to Auto-refresh
> > >> > in Drip, memory usage just goes up and up forever. If you
> > >> > can find a way to stop that happening in the small sample,
> > >> > I suspect fixing jQuery will be easy.
>
> > >> There is a problem here but I suspect that problem is with Drip and
> > >> not IE or JQuerry (there may be problems with IE and/or JQuery but if
> > >> so they are not being demonstrated here).
>
> > >> Starting with the following more extreme example of the - appendChild
> > >> -, - removeChild - sequence; appending 100,000 DIVs, stopping with an
> > >> - alert - (to give the opportunity for garbage collection to run and
> > >> memory use to be examined), removing all of those DIVs from the DOM,
> > >> stopping again, and then repeating/looping the process, should, if the
> > >> memory leak issue exists (in relation to - removeChild - use) result
> > >> in ever increasing memory consumption, which should be noticeable
> > >> using crude examination techniques (such as reading the iexplorer
> > >> process's "Mem Usage" in Task Manage) due to the number of DIVs
> > >> created. However, using this test page:-
>
> > >> <html>
> > >> <head>
> > >>      <title></title>
> > >>      <style type="text/css">
> > >>      </style>
> > >> </head>
> > >> <body>
> > >> <script type='text/javascript'>
> > >> function createDivs(){
> > >>   var div;
> > >>   for(var c = 0;c < 100000;++c){
> > >>     div = document.createElement('DIV');
> > >>     document.body.appendChild(div);
> > >>   }
> > >>   alert('Divs set');
> > >>   setTimeout(clearDom, 3000);
>
> > >> }
>
> > >> window.onload = createDivs;
>
> > >> function clearDom(){
> > >>   while(document.body.lastChild){
> > >>     document.body.removeChild(document.body.lastChild);
> > >>   }
> > >>   alert('Divs cleared');
> > >>   setTimeout(createDivs, 3000);}
>
> > >> </script>
> > >> </body>
> > >> </html>
>
> > >> (The 3 second delay between function calls is to give you time to
> > >> close the browser when enough has been seen)
>
> > >> - running in IE 6 (on XP) gives an oscillating (by about 9 megabytes)
> > >> "Mem Usage", with no overall accumulation of memory consumption as the
> > >> script continues to add and remove DIVs, and running in IE 8 (on XP)
> > >> showed the memory use increase with the first addition and then stay
> > >> at about that level. What I did not observe at all was any steady
> > >> increase in memory use, as would be expected if a memory leak issue
> > >> existed here.
>
> > >> This suggests that IE's garbage collection is successfully dealing
> > >> with this situation without even getting to the point where re-loading
> > >> the page is significant.
>
> > >> On the other hand, running the same code in Drip (with the number of
> > >> DIVs created reduced to 10,000 because Drip slows the script down
> > >> considerably) showed a steady increase in memory consumption.
> > >> Consuming more each time the DIV addition-removal cycle was executed.
>
> > >> This would lead me to conclude that:-
>
> > >> 1. The rumours of issues relating to the use of - removeChild - are
> > >> unsubstantiated and so should be ignored. If they do relate to a
> > >> memory leaking cause and effect relationship then the - removeChild -
> > >> use is not (in isolation, or directly) the cause of whatever effect is
> > >> being observed.
>
> > >> 2. Drip should not be regarded as a definitive indicator of memory
> > >> leak issues as it appears to directly provoke some of the issues it
> > >> attempts to report.
>
> > >> 3. Any supposed memory leak issues with JQuery should be demonstrated
> > >> in isolation else time and (script) performance could be squandered
> > >> attempting to 'fix' non-issues.- Hide quoted text -
>
> > >> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to