O problemă obișnuită în timpul lucrului la un proiect JavaScript Node.js este eroarea „JavaScript heap out of memory”. Această eroare apare de obicei atunci când memoria implicită alocată de sistemul dumneavoastră pentru Node.js nu este suficientă pentru a rula un proiect mare.
Eroarea este comună indiferent dacă rulați proiectul pe Windows, macOS sau o distribuție Linux precum Ubuntu. Din fericire, există câteva remedieri ușoare care pot ajuta la rezolvarea erorii „JavaScript heap of memory”.
Ce este memoria heap?
Înainte de a vă uita la remedierea erorii, este util să înțelegeți ce este memoria heap și cum îl folosesc programele.
Memoria alocată pe heap-ul de sistem se mai numește și memorie alocată dinamic. Depinde de programator să folosească memoria disponibilă după cum consideră de cuviință. Mai important, dimensiunea heap-ului pentru un program depinde de memoria virtuală disponibilă alocată acestuia.
Dacă rulați un proiect relativ mare, acesta poate necesita mai multă memorie decât bucata alocată implicit. Acest lucru poate cauza blocarea proiectului și înregistrarea erorii „Memorie din grămada JavaScript”.
Cum să remediați memoria JavaScript lipsită de memorie pe Windows
Indiferent de IDE-ul dvs., soluția „JavaScript heap out of memory” este identică.
Poti adăugați o variabilă de mediu prin Panoul de control pentru a crește memoria alocată unui proiect Node.js.
- Deschide Meniul Start, caută Setari de sistem avansateși selectați cea mai bună potrivire.
- Din caseta de dialog, faceți clic pe variabile de mediu, apoi faceți clic pe Nou de la oricare Variabile de sistem sau Variabile utilizator. Primul se aplică tuturor utilizatorilor de pe computerul dvs., în timp ce al doilea afectează doar contul dvs. curent
- În Nume variabilă câmp introduce NODE_OPTIONS. În Valoare variabilă câmp introduce --max-old-space-size=4096. Această valoare va aloca 4 GB de memorie virtuală pentru Node.js. Pentru a seta o valoare diferită, înmulțiți suma de care aveți nevoie în GB cu 1024 (valoarea variabilei trebuie să fie în MB).
- Click pe O.K pentru a salva modificările, apoi faceți clic aplica și în cele din urmă dați clic O.K inca o data. Reporniți proiectul pentru ca modificările să intre în vigoare.
De asemenea, puteți seta o variabilă de mediu printr-un terminal Windows PowerShell.
Lansați un terminal PowerShell, tastați comanda de mai jos și apăsați Enter:
$env: NODE_OPTIONS="--max-old-space-size=4096"
Dacă doriți doar să creșteți temporar memoria heap, executați comanda de mai jos într-un terminal PowerShell înainte de a vă rula proiectul:
a stabilit NODE_OPTIONS=--max-old-space-size=4096
Odată ce ați introdus această comandă, vă puteți implementa/rula proiectul folosind npm run dev sau propriul tău scenariu.
Nu uitați să introduceți întotdeauna dimensiunea de memorie necesară în MB. Nerespectarea acestui lucru poate provoca un comportament neașteptat în programul dvs. De asemenea, este vital să nu alocați întreaga memorie disponibilă, deoarece acest lucru poate cauza o defecțiune semnificativă a sistemului.
Cum să remediați eroarea JavaScript Heap Out of Memory pe macOS și Linux
Pe macOS și Linux, remedierea memoriei heap este foarte similară. Tu ar trebui exportați o variabilă de mediu care specifică cantitatea de memorie virtuală alocată lui Node.js.
În terminalul dvs., înainte de a rula proiectul, introduceți următoarea comandă și apăsați Enter:
export NODE_OPTIONS=--max-size-spațiu-vechi=4096
Acest lucru va aloca 4 GB de memorie virtuală spațiului de execuție al lui Node.js. Pentru a seta o cantitate diferită de memorie, înlocuiți 4096 cu suma necesară în MB.
Puteți adăuga comanda de mai sus în fișierul de configurare pentru a evita repetarea procesului. Pentru a face acest lucru, urmați același lucru proces pentru setarea variabilei PATH.
Evitați eroarea JavaScript Heap Out of Memory
Puteți evita această eroare asigurându-vă că programul dumneavoastră nu are scurgeri de memorie. Gestionarea corectă a memoriei este crucială atunci când scrieți programele dvs., în special într-un limbaj de nivel scăzut.
În timp ce creșterea memoriei alocate va rezolva temporar problema, ar trebui să găsiți cauza principală și să o remediați.