Fuga de memoria en Node.js: cómo identificarla y corregirla
Qué es una fuga de memoria (memory leak)
Una fuga de memoria ocurre cuando tu aplicación asigna memoria y nunca la libera. Con el tiempo, el consumo de RAM crece continuamente hasta que el proceso se bloquea o el sistema lo finaliza por falta de memoria. En Node.js esto es común cuando los objetos que deberían ser descartados continúan "atrapados" por referencias que nunca se eliminan.
Síntomas
- El uso de RAM sube de forma constante y nunca vuelve a bajar.
- La aplicación se vuelve lenta con el paso de las horas.
- Caídas periódicas (crashes) seguidas de reinicios.
- Mensajes como
JavaScript heap out of memory.
Causas más comunes
- Listeners de eventos no eliminados: registrar
on(...)repetidamente sin usarremoveListener. - Closures y variables globales: datos acumulados en variables que viven durante toda la ejecución.
- Caché infinito: guardar elementos en un objeto o Map sin limpiarlo nunca.
- Timers:
setIntervalque nunca recibe unclearInterval.
Cómo identificarlo
1. Monitorea el uso de memoria. Realiza un seguimiento del consumo de RAM a lo largo del tiempo. Un gráfico que solo sube es el indicio principal.
2. Toma un heap snapshot. Ejecuta la aplicación con la flag de inspección node --inspect tu-aplicacion.js, abre chrome://inspect en el navegador, captura dos snapshots con algunos minutos de diferencia y compara qué creció.
3. Usa process.memoryUsage(). Registra en los logs periódicamente process.memoryUsage().heapUsed para ver la tendencia.
Cómo corregirlo
- Elimina siempre los listeners que ya no se vayan a utilizar.
- Define un límite para las cachés (ej.: LRU cache) y expira los elementos antiguos.
- Limpia los timers con
clearIntervalyclearTimeout. - Evita acumular datos en variables de alcance global.
Monitoreando la memoria en Square Cloud
En Square Cloud puedes seguir el consumo de RAM de tu aplicación en tiempo real desde el Dashboard. Si el uso supera el límite de tu plan, la plataforma te avisa; de este modo, resulta fácil identificar una fuga antes de que tumbe la aplicación. Combina el monitoreo con las buenas prácticas anteriores para mantener tu bot o API estables 24/7.
Actualizado el: 12/06/2026
¡Gracias!
