Um problema comum ao trabalhar em um projeto JavaScript Node.js é o erro “JavaScript heap out of memory”. Esse erro geralmente ocorre quando a memória padrão alocada pelo seu sistema para o Node.js não é suficiente para executar um projeto grande.

O erro é comum se você executa seu projeto no Windows, macOS ou em uma distribuição Linux como o Ubuntu. Felizmente, existem algumas correções fáceis que podem ajudar a resolver o erro “JavaScript heap out of memory”.

O que é memória heap?

Antes de olhar para corrigir o erro, é útil Entenda o que é memória heap e como os programas o utilizam.

A memória alocada no heap do sistema também é chamada de memória alocada dinamicamente. Cabe ao programador usar a memória disponível como achar melhor. Mais importante, o tamanho do heap de um programa depende da memória virtual disponível alocada a ele.

Se você estiver executando um projeto relativamente grande, pode exigir mais memória do que o bloco alocado padrão. Isso pode fazer com que seu projeto falhe e registre o erro “JavaScript heap out of memory”.

Como corrigir JavaScript Heap Out of Memory no Windows

Independentemente do seu IDE, a correção “JavaScript heap out of memory” é idêntica.

Você pode adicionar uma variável de ambiente através do Painel de Controle para aumentar a memória alocada para um projeto Node.js.

  1. Abra o Menu Iniciar, procurar por Configurações avançadas do sistemae selecione a melhor correspondência.
  2. Na caixa de diálogo, clique em variáveis ​​ambientais, depois clique em Novo de qualquer um Variáveis ​​do sistema ou Variáveis ​​do usuário. O primeiro se aplica a todos os usuários em seu computador, enquanto o último afeta apenas sua conta atual
  3. No Nome variável campo digite NODE_OPTIONS. No Valor da variável campo digite --max-old-space-size=4096. Esse valor alocará 4 GB de memória virtual para o Node.js. Para definir um valor diferente, multiplique o valor necessário em GB por 1024 (o valor da variável precisa estar em MB).
  4. Clique em OK para salvar suas alterações e clique em Aplicar e finalmente clique OK mais uma vez. Reinicie seu projeto para que as alterações entrem em vigor.

Você também pode definir uma variável de ambiente por meio de um terminal do Windows PowerShell.

Inicie um terminal do PowerShell, digite o comando abaixo e pressione Enter:

$env: NODE_OPTIONS="--max-old-space-size=4096"

Se você deseja apenas aumentar a memória heap temporariamente, execute o comando abaixo em um terminal do PowerShell antes de executar seu projeto:

definir NODE_OPTIONS=--max-old-space-size=4096

Depois de inserir este comando, você pode implantar/executar seu projeto usando npm executar dev ou seu próprio roteiro.

Lembre-se sempre de inserir o tamanho de memória necessário em MB. Não fazer isso pode causar um comportamento inesperado em seu programa. Também é vital não alocar toda a memória disponível, pois isso pode causar uma falha significativa do sistema.

Como corrigir o erro de memória insuficiente de pilha de JavaScript no macOS e Linux

No macOS e no Linux, a correção da memória heap é muito semelhante. Você deve exportar uma variável de ambiente que especifica a quantidade de memória virtual alocada para Node.js.

No seu terminal, antes de executar seu projeto, digite o seguinte comando e pressione Enter:

exportar NODE_OPTIONS=--max-old-space-size=4096

Isso alocará 4 GB de memória virtual para o espaço de execução do Node.js. Para definir uma quantidade diferente de memória, substitua 4096 com a quantidade necessária em MB.

Você pode adicionar o comando acima ao seu arquivo de configuração para evitar a repetição do processo. Para isso, siga o mesmo processo para definir sua variável PATH.

Evite o erro de memória insuficiente de pilha de JavaScript

Você pode evitar esse erro garantindo que seu programa esteja livre de vazamentos de memória. O gerenciamento adequado de memória é crucial ao escrever seus programas, especialmente em uma linguagem de baixo nível.

Embora o aumento da memória alocada resolva temporariamente o problema, você deve encontrar a causa raiz e corrigi-la.