Un problema comune durante il lavoro su un progetto JavaScript Node.js è l'errore "JavaScript heap out of memory". Questo errore si verifica in genere quando la memoria predefinita allocata dal sistema a Node.js non è sufficiente per eseguire un progetto di grandi dimensioni.

L'errore è comune se esegui il tuo progetto su Windows, macOS o una distribuzione Linux come Ubuntu. Fortunatamente, ci sono alcune semplici soluzioni che possono aiutare a risolvere l'errore "JavaScript heap out of memory".

Che cos'è la memoria heap?

Prima di cercare di correggere l'errore, è utile capire cos'è la memoria heap e come lo usano i programmi.

La memoria allocata nell'heap di sistema è anche chiamata memoria allocata dinamicamente. Spetta al programmatore utilizzare la memoria disponibile come meglio crede. Ancora più importante, la dimensione dell'heap per un programma dipende dalla memoria virtuale disponibile allocata.

Se stai eseguendo un progetto relativamente grande, potrebbe richiedere più memoria rispetto al blocco allocato predefinito. Ciò potrebbe causare l'arresto anomalo del progetto e la registrazione dell'errore "JavaScript heap out of memory".

instagram viewer

Come risolvere l'heap JavaScript esaurito su Windows

Indipendentemente dal tuo IDE, la correzione "JavaScript heap out of memory" è identica.

Puoi aggiungere una variabile di ambiente tramite il Pannello di controllo per aumentare la memoria allocata a un progetto Node.js.

  1. Apri il Menu iniziale, Cercare Impostazioni avanzate di sistemae seleziona la migliore corrispondenza.
  2. Dalla finestra di dialogo, fare clic su variabili ambientali, quindi fare clic su Nuovo da entrambi Variabili di sistema o Variabili utente. Il primo vale per tutti gli utenti del tuo computer, mentre il secondo riguarda solo il tuo conto corrente
  3. Nel Nome variabile campo entrare NODE_OPZIONI. Nel Valore variabile campo entrare --max-old-space-size=4096. Questo valore assegnerà 4 GB di memoria virtuale a Node.js. Per impostare un valore diverso, moltiplica la quantità richiesta in GB per 1024 (il valore della variabile deve essere in MB).
  4. Clicca su OK per salvare le modifiche, quindi fare clic su Applicare e infine fare clic OK ancora una volta. Riavvia il progetto per rendere effettive le modifiche.

È inoltre possibile impostare una variabile di ambiente tramite un terminale di Windows PowerShell.

Avvia un terminale PowerShell, digita il comando seguente e premi Invio:

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

Se desideri solo aumentare temporaneamente la memoria heap, esegui il comando seguente in un terminale PowerShell prima di eseguire il progetto:

impostare OPZIONI_NODO=--max-old-space-size=4096

Dopo aver inserito questo comando, puoi distribuire/eseguire il tuo progetto utilizzando npm esegui dev o il tuo copione.

Ricordarsi sempre di inserire la dimensione di memoria richiesta in MB. Non farlo può causare un comportamento imprevisto nel tuo programma. È inoltre fondamentale non allocare l'intera memoria disponibile poiché ciò può causare un errore significativo del sistema.

Come correggere l'errore di memoria insufficiente dell'heap JavaScript su macOS e Linux

Su macOS e Linux, la correzione della memoria heap è molto simile. Dovresti esportare una variabile di ambiente che specifica la quantità di memoria virtuale allocata a Node.js.

Nel tuo terminale, prima di eseguire il tuo progetto, inserisci il seguente comando e premi Invio:

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

Ciò assegnerà 4 GB di memoria virtuale allo spazio di esecuzione di Node.js. Per impostare una diversa quantità di memoria, sostituire 4096 con l'importo richiesto in MB.

Puoi aggiungere il comando precedente al tuo file di configurazione per evitare di ripetere il processo. Per farlo, segui lo stesso processo per impostare la variabile PATH.

Evita l'errore di memoria insufficiente dell'heap JavaScript

Puoi evitare questo errore assicurandoti che il tuo programma sia privo di perdite di memoria. Una corretta gestione della memoria è fondamentale quando si scrivono i programmi, soprattutto in un linguaggio di basso livello.

Mentre l'aumento della memoria allocata risolverà temporaneamente il problema, dovresti trovare la causa principale e risolverla.