Ett vanligt problem när du arbetar med ett JavaScript Node.js-projekt är felet "JavaScript-högen slut på minnet". Det här felet uppstår vanligtvis när standardminnet som tilldelats av ditt system till Node.js inte räcker för att köra ett stort projekt.
Felet är vanligt oavsett om du kör ditt projekt på Windows, macOS eller en Linux-distribution som Ubuntu. Lyckligtvis finns det några enkla korrigeringar som kan hjälpa till att lösa felet "JavaScript-högen slut på minnet".
Vad är Heap Memory?
Innan du tittar på att åtgärda felet är det bra att förstå vad heap memory är och hur program använder det.
Minne som allokerats på systemhögen kallas också dynamiskt allokerat minne. Det är upp till programmeraren att använda det tillgängliga minnet som de vill. Ännu viktigare är att högstorleken för ett program beror på det tillgängliga virtuella minnet som tilldelats det.
Om du kör ett relativt stort projekt kan det kräva mer minne än den tilldelade standardbiten. Detta kan göra att ditt projekt kraschar och loggar felet "JavaScript-högen slut på minnet".
Hur man fixar JavaScript-högen slut på minne på Windows
Oavsett din IDE är fixen "JavaScript-högen slut på minne" identisk.
Du kan lägg till en miljövariabel via kontrollpanelen för att öka minnet som allokerats till ett Node.js-projekt.
- Öppna Start meny, söka efter Avancerade systeminställningaroch välj den bästa matchningen.
- Klicka på i dialogrutan Miljövariabler, klicka sedan på Ny från någondera Systemvariabler eller Användarvariabler. Det förra gäller för alla användare på din dator, medan det senare bara påverkar ditt nuvarande konto
- I den Variabelnamn fältet enter NODE_OPTIONS. I den Variabelt värde fältet enter --max-gammal-space-size=4096. Detta värde kommer att allokera 4 GB virtuellt minne till Node.js. För att ställa in ett annat värde, multiplicera det belopp du behöver i GB med 1024 (variabelvärdet måste vara i MB).
- Klicka på OK för att spara dina ändringar och klicka sedan på Tillämpa och klicka slutligen OK en gång till. Starta om ditt projekt för att ändringarna ska träda i kraft.
Du kan också ställa in en miljövariabel via en Windows PowerShell-terminal.
Starta en PowerShell-terminal, skriv kommandot nedan och tryck på Enter:
$env: NODE_OPTIONS="--max-gammal-space-size=4096"
Om du bara vill öka högminnet tillfälligt, kör kommandot nedan i en PowerShell-terminal innan du kör ditt projekt:
uppsättning NODE_OPTIONS=--max-gammal-space-size=4096
När du har angett det här kommandot kan du distribuera/köra ditt projekt med hjälp av npm kör dev eller ditt eget manus.
Kom ihåg att alltid ange önskad minnesstorlek i MB. Att inte göra det kan orsaka oväntat beteende i ditt program. Det är också viktigt att inte allokera hela ditt tillgängliga minne eftersom detta kan orsaka ett betydande systemfel.
Hur man åtgärdar JavaScript Heap Out of Memory Error på macOS och Linux
På macOS och Linux är heap-minnesfixet väldigt likt. Du borde exportera en miljövariabel som anger mängden virtuellt minne som allokerats till Node.js.
I din terminal, innan du kör ditt projekt, skriv in följande kommando och tryck på Enter:
exportera NODE_OPTIONS=--max-gammal-space-size=4096
Detta kommer att allokera 4 GB virtuellt minne till exekveringsutrymmet för Node.js. För att ställa in en annan mängd minne, byt ut 4096 med önskat belopp i MB.
Du kan lägga till kommandot ovan i din konfigurationsfil för att undvika att processen upprepas. För att göra det, följ samma sak process för att ställa in din PATH-variabel.
Undvik fel i JavaScript-högen slut på minne
Du kan undvika detta fel genom att se till att ditt program är fritt från minnesläckor. Korrekt minneshantering är avgörande när du skriver dina program, särskilt på ett lågnivåspråk.
Även om en ökning av det tilldelade minnet tillfälligt löser problemet, bör du hitta grundorsaken och åtgärda det.