> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# 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 sem `removeListener`.
* **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**: `setInterval` que nunca recebe `clearInterval`.

## 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 `clearInterval` e `clearTimeout`.
* 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