Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #27705

Re: Is it necessary to explicitly destroy elements?

From Joao Rodrigues <groups_jr-1@yahoo.com.br>
Newsgroups comp.lang.javascript
Subject Re: Is it necessary to explicitly destroy elements?
Date 2015-05-16 22:05 -0300
Organization Aioe.org NNTP Server
Message-ID <mj8pgm$nev$1@speranza.aioe.org> (permalink)
References <mj7odj$ejr$1@dont-email.me> <GC-20150516175759@ram.dialup.fu-berlin.de> <2602320.PcnAOMWr9L@PointedEars.de>

Show all headers | View raw


Thomas 'PointedEars' Lahn wrote:
> Stefan Ram wrote:
>
>> "Leonardo Azpurua" <leonardo@exmvps.org> writes:
>>> My question (which is browser dependent, but there's no better place to
>>> ask browser related questions than here) is: do most "modern" browsers
>>> (say FireFox, Chrome, IE9+, Opera, Safari) automatically handle all the
>>> cleanup of a disposed element (detaching event handlers, freeing graphical
>>> resources, deallocating memory, etc) for all the elemets inside a disposed
>>> control, or is it necessary to provide a function to handle all of it
>>> explicitly?
>>
>>    The garbage collectors should take care of JavaScript objects and of
>>    DOM objects. But some collectors cannot clean up in all situations.
>>    To be on the safe side:
>>
>> - avoid circular references between JavaScript objects and DOM objects
>> - avoid using closure variables in event handlers
>> - avoid using inline event handlers (onclick='f()')
>> - avoid using expando properties
>> - nullify expando properties and DOM references when not needed anymore
>
> The IE memory leak issue has been resolved as of IE 9, so given the target
> environments none of this is necessary anymore.  Therefore, the programming
> language to which these measures applied, was JScript, not JavaScript, and
> only the MSHTML DOM, not all DOMs.
>

Even though newer versions of modern browsers seem to have solved the 
memory leak problems of yore, this issue may arise again because of the 
single-page applications, for one, JS animations without properly 
clearing timers. So, we have one more reason to use CSS animations 
instead of JS animations.

In Chrome Developer tools, we can use the Timeline panel -> Memory view, 
and the 'Take Heap Snapshot' in Profiles, to take heap snapshots at a 
series of intervals.

According to Google [1], "the unique ability of the new tool is to 
reflect bidirectional dependencies between browser native objects (DOM 
nodes, CSS rules) and JavaScript objects. This helps to discover 
otherwise invisible leaks happening due to forgotten detached DOM 
subtrees floating around."

[1] <https://developer.chrome.com/devtools/docs/heap-profiling>

There is a good article by Addy Osmani teaching how to chase leaks with 
Chrome DevTools [2].

[2] 
<http://addyosmani.com/blog/taming-the-unicorn-easing-javascript-memory-profiling-in-devtools/>

-- 
Joao Rodrigues

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Is it necessary to explicitly destroy elements? "Leonardo Azpurua" <leonardo@exmvps.org> - 2015-05-16 11:14 -0430
  Re: Is it necessary to explicitly destroy elements? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-16 17:44 +0200
    Re: Is it necessary to explicitly destroy elements? "Leonardo Azpurua" <leonardo@exmvps.org> - 2015-05-16 11:32 -0430
      Re: Is it necessary to explicitly destroy elements? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-16 18:06 +0200
  Re: Is it necessary to explicitly destroy elements? "Leonardo Azpurua" <leonardo@exmvps.org> - 2015-05-16 11:42 -0430
    Re: Is it necessary to explicitly destroy elements? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-16 18:12 +0200
  Re: Is it necessary to explicitly destroy elements? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-16 18:09 +0200
    Re: Is it necessary to explicitly destroy elements? Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-05-16 22:05 -0300
      Re: Is it necessary to explicitly destroy elements? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-17 08:01 +0200
        Re: Is it necessary to explicitly destroy elements? Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-05-17 13:29 -0300
          Re: Is it necessary to explicitly destroy elements? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-05-17 19:06 +0200
      Re: Is it necessary to explicitly destroy elements? "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2015-05-17 11:53 +0200
        Re: Is it necessary to explicitly destroy elements? Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2015-05-17 13:20 -0300

csiph-web