This guy (from M$FT Global Product Development, whatever that is) : http://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector.aspx
evidently claims that all the IE versions prior to 8, have been pached up and that IE8 has no leaks. *AND* that the only remaining issue is with removeChild() and that this is not actually a mem leak ... ;o) My counter claim is that he (and they) better start talking and sorting their JScript GC. It seems from your and other report they still have (at least) 3 GC's : for JScript for VBscript and for CLR (aka .NET). And on several M$FT hosted blogs we can read how VBscript mem usage is simpler and better. And most importantly how CLR GC is completely different (http://blogs.msdn.com/maoni/ archive/2005/10/03/so-what-s-new-in-the-clr-2-0-gc.aspx) and conceptually and practicaly proven to be better (generational vs. clean-and-sweep)... It seems you are not using it, and I think we should discard DRIP and use (M$FT's own) very good proc explorer. (http:// live.sysinternals.com/) This way we can credibly monitor any browser and see very nicely what is going on. And more importantly we can measure the effects of jQuery patches. Also, I would be very interested if you can run your one page as an HTA, and then report on its mem spending habits? Also, please do not feel offended if I ask you if you file begins like this : <!DOCTYPE html> <html> <head> <!-- Set document compatibility mode to IE8Mode --> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> My experience is that only with this prolog we have expected IE8 behaviour and features present. And last but not the least, this very bad practice and desperate measure, might help: if ( "function" === typeof CollectGarbage) setInterval( 60000, CollectGarbage ) ; --DBJ On Apr 24, 9:45 am, Janne Kytömäki <janne.kytom...@gmail.com> wrote: > Not sure if this is related, or if the problem is with jquery, jquery- > ui, the way we are using them or just IE, but we too are experiencing > problems with IE and growing memory use. Our application is heavyish, > uses lots of jquery-ui dialogs, and runs within one html page for long > times without reloading. We're starting to have problems with IE (7), > its memory consumption grows quite fast while using the app, and it > quickly becomes sluggish to use. > > I've created a simple test page athttp://linux.kytomaki.com/jqtest/. > It creates empty jquery-ui dialogs and then immediately destroys them. > The test uses jquery-svn-trunk rev 6320 and jquery-ui 1.7.1. > > Monitoring memory usage from Windows XP task manager: > > On IE 7 consumption starts from 38M after loading the page. After > creating and destroying a dialog 100 times on one run, the consumption > ends up to 72M. Refreshing the page doesn't seem to have effect on it. > Minimizing and restoring the IE window takes mem to 10M, after which > refresh of the page takes it to 44M. Doing another 100 dialog create- > destroy-cycles takes it to 73M. > > With IE 8, mem usage starts from 21M. 100 create-destroy-cycles takes > it to 55M, so again memory seems to be leaked. This time, page reload > frees some memory bringing it to 30M, but now the page minimize- > restore-trick doesn't to do anything. Freeing memory by reload doesn't > help our case, since the app works within one page that shouldn't be > reloaded. > > Anything obviously wrong with the test case that might cause the > problem? > > -Janne > > On 23 huhti, 12:11, DBJDBJ <dbj...@gmail.com> wrote: > > > I personaly will always call CollectGarbage() on window.unload if page > > is in IE and full IE8 enviuronment is not detected ... > > > Here is why.I will make it obivous, since hardly anyone bothered to > > read ;o) > > >http://blogs.msdn.com/ericlippert/archive/2003/09/17/53038.aspx > > > Crucial paragraph for us today : > > > "... The CLR GC is also mark-n-sweep but it is generational – the more > > collections an object survives, the less often it is checked for > > life. This dramatically improves performance for large-working-set > > applications. Of course, the CLR GC was designed for industrial-grade > > applications, the JScript GC was designed for simple little web > > pages. ... " > > > So in 2003 M$FT implemented JScript GC for "simple little web > > pages" ... the policy which we are suffering with in 2009, in IE6 and > > IE7. > > > Also, > > herehttp://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector.aspx > > , we are being convinced that due to numerous patches IE6 and IE7, > > memory leaks have been all sorted , beside a removeChild() problem. > > > Also herehttp://blogs.msdn.com/heaths/archive/2005/06/06/425709.aspx, > > is another very interesting M$FT text from 2005. Apparently VBscript > > has no memory loss problem at all. Nice to know ;o( And yes, after all > > CollectGarbage() should be called to avoid "deadlocks" ? what " > > deadlocks" ;o( ? > > > Ok, to put things in perspective, jQuery might find itslef on a > > windows machine. Where it will NOT have IE8 installed and on top of > > that it might NOT run "inside" IE6 or 7 at all. It might run "inside" > > mshta.exe or just as an windows js file. often used together with WMI > > scripting, WSH objects etc ... > > > Conclusion: jQuery 1.3.2 will have all possible measures in place to > > minimize the IE6 and 7 (or otherwise) memory leaks. Apparently IE8 has > > no leaks. The only problem being that almost *all* companies will not > > have IE8 allowed before the end of 2009 or even latter. > > > So one should use jQ 1.3.2 with all anti mem leak measures. Nothing > > else can be done. If and when everyone goes IE8 the probem should be > > (will be?) gone. > > > So to repeat once more : > > I personaly will always call CollectGarbage() on window.unload if page > > is in IE and full IE8 enviuronment is not detected ... > > > -- DBJ > > > On Apr 23, 8:46 am, Danny Tuppeny <danny.tupp...@gmail.com> wrote: > > > > 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 > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---