Lingua-e
← Errores
JavaScript

Qué significa Heap de JavaScript sin memoria y cómo solucionarlo

Referencia del error

Heap de JavaScript sin memoria

Lenguaje

JavaScript

Severidad

Crítica

Cuándo ocurre

Este error fatal bloquea el proceso Node.js cuando el heap de JavaScript V8 se agota.

Posibles soluciones

Usa streams y generadores para procesar datos de forma incremental. Perfila la memoria con --inspect y snapshots del heap de Chrome DevTools para encontrar fugas. Aumenta el tamaño del heap con --max-old-space-size como medida temporal mientras corriges la causa raíz.

Más detalles

Este error fatal bloquea el proceso Node.js cuando el heap de JavaScript V8 se agota. A diferencia de la mayoría de los errores, no puede capturarse con try/catch porque es un abort duro del proceso. El tamaño del heap predeterminado es aproximadamente 1.5 GB en sistemas de 64 bits.

Por qué ocurre

  • Acumular grandes cantidades de datos en memoria en lugar de transmitirlos.
  • Una fuga de memoria de clausuras, escuchadores de eventos o cachés globales que crecen sin límite.
  • Cargar un archivo grande completo o conjunto de resultados de base de datos en memoria a la vez.
  • El tamaño del heap es insuficiente para la carga de trabajo y necesita aumentarse.

Posibles soluciones

Usa streams y generadores para procesar datos de forma incremental. Perfila la memoria con --inspect y snapshots del heap de Chrome DevTools para encontrar fugas. Aumenta el tamaño del heap con --max-old-space-size como medida temporal mientras corriges la causa raíz.

Ejemplos

JavaScript

Código que causa el error

const data = [];
while (true) {
  data.push(new Array(10000).fill("x"));
}

Error en la terminal

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
 1: 0xb7c2e0 node::Abort() [node]
...
Aborted (core dumped)

Código corregido

// Increase heap size as a short-term fix
// node --max-old-space-size=4096 app.js

// Long-term: process data in streams instead
const { Readable } = require("stream");
const readable = Readable.from(generateData());
readable.on("data", (chunk) => process(chunk));

Practica en inglés

¿Cómo le explicarías un JavaScript Heap Out of Memory a un compañero dev? Elige la frase correcta:

"I hit an error...

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis