Lingua-e
JavaScript

¿Qué significa Heap de JavaScript sin memoria?

← Errores

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.

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ómo solucionarlo

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.

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));

Errores relacionados

¿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