The error comes up if you try to do this in the empty() call: this.firstChild.outerHTML = '';
I changed my code base to use 'outerHTML' for the remove() function and use the other 'garbage bin' method for the firstChild issue. I am running tests now and will get back to everyone shortly. -Chris On Wed, Nov 26, 2008 at 8:21 AM, Ariel Flesler <[EMAIL PROTECTED]> wrote: > > Which nodes generate an error ? > > On Wed, Nov 26, 2008 at 5:53 AM, Andrea Giammarchi > <[EMAIL PROTECTED]> wrote: > > Hi Ariel, is this what you would apply for each nested node in case of > > $.empty() ? > > > > The only problem I can see is with nodes that generate an error if > outerHTML > > property is assigned and a try catch could decrease execution speed. > > > > Any ideas? > > > > Regards > > > > On Tue, Nov 25, 2008 at 11:30 PM, Ariel Flesler <[EMAIL PROTECTED]> > wrote: > >> > >> Well... I concluded a nicer solution and asked you to try it. > >> But you never replied... > >> > >> http://dev.jquery.com/ticket/3553 > >> > >> if (this.parentNode) > >> this.parentNode.removeChild( this ); > >> if (jQuery.browser.msie) > >> this.outerHTML = ""; > >> > >> -- > >> Ariel Flesler > >> http://flesler.blogspot.com/ > >> > >> On Nov 25, 3:28 pm, "Chris Robinson" <[EMAIL PROTECTED]> wrote: > >> > Hey Nick, > >> > > >> > this was never completely resolved. The edited jQuery source I was > >> > playing > >> > around with is > >> > here: > http://www.outsidethediv.com/memory-leak-test/js/jquery-1.2.6-updated.js > >> > > >> > You can try swapping your jquery include with it and see if that helps > >> > at > >> > all. It seemed to help out a good deal in my case but was rather > >> > inconclusive in smaller stripped down tests. > >> > > >> > On Tue, Nov 25, 2008 at 9:30 AM, Nick <[EMAIL PROTECTED]> wrote: > >> > > >> > > I am having a very similar problem. Can someone give more details > as > >> > > how to modify the JQ source file to fix this? > >> > > >> > > I have noticed (in Drip) that when I refresh the page, the DOM nodes > >> > > duplicate. This doesn't make any sense to me since I know JQ > unbinds > >> > > everything on page unload in IE. This node duplication is leading > to > >> > > some serious memory issues in my app that needs to run for up to 8 > >> > > hours straight without a browser restart. > >> > > >> > > Any help would be much appreciated. > >> > > >> > > Thanks, > >> > > Nick > >> > > >> > > On Oct 24, 12:50 pm, chris robinson <[EMAIL PROTECTED]> wrote: > >> > > > Hey all, > >> > > >> > > > I believe I have found a leak and have the beginnings of a > solution > >> > > > to > >> > > > it. > >> > > >> > > > I'm writing an app that preforms ajax searching that returns > pretty > >> > > > large result sets. I render them via jQuery into a tbody. once a > >> > > > subsequent search is performed I call tbody.empty() and append the > >> > > > new > >> > > > results. I created a test harness that would perform a predefined > >> > > > search 5000 times in a row with a good amount of time in between. > >> > > >> > > > I noticed that IE was allocating quite a bit of memory and never > >> > > > reclaiming it. At first I thought it was a closure or circular > >> > > > reference on my part. Once I was sure I had removed them I ran > more > >> > > > test, sure enough it was still allocating a lot of memory. > Through > >> > > > a > >> > > > lot of research I found this articlehttp:// > >> > >www.scribd.com/doc/2159768/Ajax-Part2 > >> > > > which says that JS's removeChild will leak in IE. Microsoft uses > >> > > > another method to remove which is essentially this: > >> > > >> > > > function DestroyElement(elem) { > >> > > > var garbageBin = > >> > > > document.getElementById('IEMemoryLeakGarbageBin'); > >> > > > if(garbageBin === undefined) { > >> > > > garbageBin = document.createElement("DIV"); > >> > > > garbageBin.id = "IEMemoryLeakGarbageBin"; > >> > > > garbageBin.style.display = 'none'; > >> > > > document.body.appendChild(garbageBin); > >> > > > } > >> > > > garbageBin.appendChild(elem); > >> > > > garbageBin.innerHTML = ""; > >> > > >> > > > } > >> > > >> > > > I went through jQuery 1.2.6 and replaced the removeChild > references > >> > > > with a check for IE, and if so use this, else use the regular > >> > > > removeChild. After doing so and rerunning my test I saw drastic > >> > > > improvements in memory being reallocated after my elements were > >> > > > removed from the document. > >> > > >> > > > I also ran these test on FF, with or without this change it ran > the > >> > > > same way, recollecting memory correctly. > >> > > >> > > > this is only seems to be a drastic performance increase if you are > >> > > > creating 1000+ dom elements and binding events to them, but, the > app > >> > > > I > >> > > > am writing has to be able to run all day with out leaving or > >> > > > refreshing the page. > >> > > >> > > > I just thought the Dev team might be interested in my findings. I > >> > > > plan on striping this down and writing conclusive tests and > >> > > > documentation over the weekend. > >> > > >> > > > -Chris > >> > > >> > > >> > > > > > > > > > > > > > -- > Ariel Flesler > http://flesler.blogspot.com > > > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---