Um dos problemas mais difíceis de identificar em aplicações JavaScript são os memory leaks.
Eles não quebram o código imediatamente, mas fazem a aplicação:
- ficar lenta com o tempo
- consumir memória demais
- travar ou recarregar inesperadamente
🎯 Objetivo da aula
Ao final desta aula, você será capaz de:
- Entender o que são memory leaks
- Identificar causas comuns
- Evitar referências desnecessárias
- Escrever código mais seguro e sustentável
O que é um memory leak?
Um memory leak acontece quando:
objetos que não são mais necessários continuam ocupando memória.
Em JavaScript, isso ocorre quando o Garbage Collector não consegue liberar um objeto, porque ainda existe alguma referência a ele.
Importante: o problema não é o Garbage Collector
O Garbage Collector funciona muito bem.
O problema geralmente é:
- referências mantidas sem necessidade
- listeners esquecidos
- closures mal usados
Causa 1 — Event listeners não removidos
Veja este exemplo:
const botao = document.querySelector("#btn");
function aoClicar() {
console.log("Clicou!");
}
botao.addEventListener("click", aoClicar);
Se esse botão for removido do DOM:
- o listener continua na memória
- a função não é liberada
✅ Correto:
botao.removeEventListener("click", aoClicar); Causa 2 — Closures mantendo referências
Closures são poderosos — e perigosos se mal usados.
function criarContador() { let contador = 0;
return function () {
contador++;
console.log(contador);
};
}
const contar = criarContador();
Aqui:
- a variável
contadornunca é liberada - enquanto
contarexistir
Causa 3 — Variáveis globais desnecessárias
Variáveis globais vivem durante toda a execução da aplicação.
❌ Evite:
let dados = [];
function carregar() {
dados.push(new Array(1000000));
}
Esse array nunca será liberado.
Causa 4 — Timers esquecidos
Timers também mantêm referências.
setInterval(() => { console.log("Executando..."); }, 1000); Se não forem cancelados:
- continuam rodando
- mantêm funções vivas
✅ Correto:
const id = setInterval(() => { console.log("Executando..."); }, 1000);
clearInterval(id);
Causa 5 — Estruturas que crescem sem controle
Exemplo clássico:
const cache = [];
function adicionar(item) {
cache.push(item);
}
Se nunca limpar:
- a memória cresce indefinidamente
Boas práticas para evitar memory leaks
- remova event listeners quando não precisar mais
- limpe timers (
clearTimeout,clearInterval) - evite variáveis globais
- tenha cuidado com closures longas
- libere referências explicitamente quando possível
Uso consciente de WeakMap e WeakSet
Como vimos anteriormente:
WeakMapeWeakSetajudam a evitar vazamentos- não impedem o Garbage Collector
Ferramentas de diagnóstico
Você pode investigar memory leaks usando:
- DevTools → Memory
- Heap snapshots
- Performance monitor
Mas o melhor diagnóstico ainda é:
código bem pensado.
Resumo da aula para nunca mais esquecer
- Memory leaks consomem memória silenciosamente
- São causados por referências desnecessárias
- Listeners, timers e closures são vilões comuns
- Boas práticas evitam problemas futuros
- Código consciente é código saudável
Na próxima aula, vamos fechar esse bloco com um tema crítico: Segurança no JavaScript (XSS).
HARDWARE
Entendendo o seu computador
O que há dentro do meu computador?
Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.
Você Sabia?
Galaxy Game
As primeiras máquinas de fliperama do mundo a utilizarem moedas, chamadas de Galaxy Game, custavam mais de 20 mil dólares para serem produzidas. Saiba mais sobre elas aqui.
Space Invaders
O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.
Máquina de Pascal
A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. Saiba mais.
Mortal Kombat - O Filme
O filme Mortal Kombat, inspirado no jogo de mesmo nome, faturou 23 milhões de dólares apenas no fim de semana de estreia nos EUA. Ainda sobre este título de sucesso, outra cifra que impressiona é o faturamento ao longo do primeiro ano: 1 bilhão de dólares no mundo todo.
Final Fantasy
O famoso título Final Fantasy, da Square Enix, tem este nome exatamente porque se tratava da última esperança da empresa, que estava à beira da falência quando o lançou. Clique aqui e conheça detalhes dessa história.










