Gerenciamento de memória (Node JS e Browser)

1. Existe uma configuração de “JavaScript heap max memory”?

Em Node.js (sim)

O Node roda sobre o V8 e tem um limite de heap configurável. Por padrão, em 64 bits o Node normalmente limita o old space do V8 (onde a maior parte dos objetos vive) em algo em torno de ~1,4–2 GB.

Você pode aumentar esse limite com a flag --max-old-space-size:

node --max-old-space-size=4096 app.js
# 4096 = ~4 GB de heap para o V8

Também é possível definir via NODE_OPTIONS:

export NODE_OPTIONS="--max-old-space-size=4096"
node app.js

Essa flag define o tamanho máximo do old space heap do V8 em MB; se sua aplicação ultrapassar esse limite, você recebe o erro JavaScript heap out of memory.

Regra prática: use no máximo ~70–75% da RAM disponível para o heap do Node, deixando o restante para o sistema operacional e outros processos.


No navegador (na prática, não)

Nos navegadores, quem controla os limites de heap é o motor JavaScript (V8 no Chrome, SpiderMonkey no Firefox, etc.). Você não consegue configurar de forma confiável um “max heap” a partir do seu código.

Alguns detalhes:

  • Historicamente, o V8 usava limites em torno de 512 MB (32 bits) e ~1,4 GB (64 bits) por processo, com versões mais novas conseguindo ir mais alto (até cerca de 4 GB com pointer compression, e mais em máquinas com muita RAM), mas isso é dependente da implementação.
  • Em páginas muito pesadas, você pode ver o navegador quebrar por falta de memória por volta de ~2 GB por aba no Chrome.

Você não consegue “configurar” isso via JavaScript; no navegador, o foco é usar menos memória, não aumentar o limite.