Memory Leak ■ "... deixar de remover dados que não podem ser referenciados, o que é chamado de erro de vazamento de memória (memory leak) ..." Livro - http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811
Memory Leak ■ "... quando uma porção de memória, alocada para uma determinada operação, não é liberada quando não é mais necessária" Wikipedia - http://pt.wikipedia.org/wiki/Vazamento_de_memória
Garbage Collector ■ "A coleta de lixo é a reivindicação de porções de memória contendo objetos que não podem mais ser acessados por um programa" Livro - http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811
Garbage Collector ■ Para a execução durante um ciclo de coleta ■ Coleta de lixo com Pausa Curta ■ Evita o estilo 'pare o mundo' ■ Sabe onde todos objetos estão na memória ■ Previne Memory Leaks Design Elements - https://developers.google.com/v8/design#garb_coll
Garbage Collector ■ Algoritmo Mark-and-sweep ○ Mede alcançabilidade ○ Define objetos roots (objetos globais) ○ Parte da raíz buscando todos objetos alcançáveis ○ Objetos com referência e não alcançáveis são coletados
Boas Práticas ■ Evite associar objetos Javascript a objetos do DOM ■ Sempre remova os eventos/objetos antes de remover os objetos do DOM ■ Evite referenciar objetos globais dentro de closures
Problemas ■ Navegadores com Interpretadores diferentes ■ Implementações divergentes da especificação ■ Sistemas Real Time ■ Muito ajax com criação de DOM sem
Ferramentas ■ Drip: IE Leak Detector ■ Leak Finder For Javascript - google code ■ Deep Memory Profiler - Chromium Projects ■ Aba 'Timeline' e 'Profiles' da ferramenta do desenvolvedor no Chrome
Considerações Finais ■ Vivencie a cultura Hacker (investigue tudo) ■ Tire suas dúvidas na fonte (ECMA Script) ■ Entenda as frameworks, bibliotecas e plugins ■ Se envolva com software livre ■ Respire Computação