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 V8Também é possível definir via NODE_OPTIONS:
export NODE_OPTIONS="--max-old-space-size=4096"
node app.jsEssa 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.