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?
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.
Mario em Donkey Kong
O personagem Mario surgiu pela primeira vez no mundo dos games em um jogo chamado Donkey Kong, lançado em 1981. Mario, que naquela época se chamava Jumpman, não era o personagem principal do jogo, mas ele se tornaria um dos mais famosos personagens do mundo dos games. Saiba mais.
Mouse
O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.
Playstation
O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.
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.










