So... let me get this right, both leak but innerHTML leaks less ?

On Wed, Dec 3, 2008 at 2:45 AM, Chris Robinson <[EMAIL PROTECTED]> wrote:
>
> After a good deal of testing at 250 test runs it seems that the innerHTML
> "garbage bin" and outerHTML methods are almost identical when it comes to
> memory usage.  outerHTML uses a VERY small amount more (around 36k).  I am
> going to rerun the test at 2000 iterations to see if it makes a difference.
>
> Again, sorry for the delay, work is very hectic these days.  I should be
> able to report back tomorrow during the day (fingers crossed).
>
>
> On Mon, Dec 1, 2008 at 3:26 PM, Andrea Giammarchi
> <[EMAIL PROTECTED]> wrote:
>>
>> Just as extra info, it seems that innerHTML with IE does a good work, it
>> is like minimizing the window and maximizing it back. The problem is that it
>> is not usable to force the CollectGarbage (that does not do its work as
>> expected to me ...) ... does anybody else has bad experience with IE and
>> ExtJS over jQuery? :D
>>
>> On Thu, Nov 27, 2008 at 7:12 PM, Andrea Giammarchi
>> <[EMAIL PROTECTED]> wrote:
>>>
>>> Ariel I did a quick test with I don't remember which document and I
>>> received an error.
>>> Unfortunately I had no time to investigate but I have exactly the same
>>> problem, "empty does not empty" at all.
>>>
>>> If the trick with outerHTML works I'll try tomorrow in my application and
>>> I'll tell you.
>>>
>>> Regards
>>>
>>> On Thu, Nov 27, 2008 at 1:39 PM, Ariel Flesler <[EMAIL PROTECTED]>
>>> wrote:
>>>>
>>>> So how do you know some cause errors if you haven't tested yet ?
>>>>
>>>> On Thu, Nov 27, 2008 at 9:47 AM, Andrea Giammarchi
>>>> <[EMAIL PROTECTED]> wrote:
>>>> > I guess textNodes, html itself and probably iframes.
>>>> > I'll tell you as soon as I can test stuff :-)
>>>> >
>>>> > On Wed, Nov 26, 2008 at 1:21 PM, 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
>>>> >>
>>>> >>
>>>> >
>>>> >
>>>> > >
>>>> >
>>>>
>>>>
>>>>
>>>> --
>>>> Ariel Flesler
>>>> http://flesler.blogspot.com
>>>>
>>>>
>>>
>>
>>
>>
>
>
> >
>



-- 
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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to