Vazamento de memória em Node.js: identificar e corrigir
O que é um vazamento de memória (memory leak)
Um vazamento de memória acontece quando sua aplicação aloca memória e nunca a libera. Com o tempo, o consumo de RAM cresce continuamente até o processo travar ou ser encerrado pelo sistema por falta de memória. Em Node.js isso é comum quando objetos que deveriam ser descartados continuam "presos" por referências que nunca são removidas.
Sintomas
- O uso de RAM sobe de forma constante e nunca volta a cair.
- A aplicação fica lenta com o passar das horas.
- Quedas periódicas (crash) seguidas de reinício.
- Mensagens como
JavaScript heap out of memory.
Causas mais comuns
- Listeners de eventos não removidos: registrar
on(...)repetidamente semremoveListener. - Closures e variáveis globais: dados acumulados em variáveis que vivem por toda a execução.
- Cache infinito: guardar itens em um objeto ou Map sem nunca limpar.
- Timers:
setIntervalque nunca recebeclearInterval.
Como identificar
1. Monitore o uso de memória. Acompanhe o consumo de RAM ao longo do tempo. Um gráfico que só sobe é o principal indício.
2. Tire um heap snapshot. Rode a aplicação com a flag de inspeção node --inspect sua-aplicacao.js, abra chrome://inspect no navegador, capture dois snapshots com alguns minutos de diferença e compare o que cresceu.
3. Use process.memoryUsage(). Logue periodicamente process.memoryUsage().heapUsed para enxergar a tendência.
Como corrigir
- Sempre remova listeners que não serão mais usados.
- Defina um limite para caches (ex.: LRU cache) e expire itens antigos.
- Limpe timers com
clearIntervaleclearTimeout. - Evite acumular dados em variáveis de escopo global.
Monitorando memória na Square Cloud
Na Square Cloud você acompanha o consumo de RAM da sua aplicação em tempo real pelo Dashboard. Se o uso passar do limite do seu plano, a plataforma avisa — então fica fácil identificar um vazamento antes que ele derrube a aplicação. Combine o monitoramento com as boas práticas acima para manter seu bot ou API estáveis 24/7.ção
Atualizado em: 13/06/2026
Obrigado!
