Běžným problémem při práci na projektu JavaScript Node.js je chyba „Hromady JavaScriptu nedostatek paměti“. K této chybě obvykle dochází, když výchozí paměť přidělená systémem Node.js nestačí ke spuštění velkého projektu.
Chyba je běžná, ať už svůj projekt spouštíte v systému Windows, macOS nebo distribuci Linuxu, jako je Ubuntu. Naštěstí existuje několik jednoduchých oprav, které mohou pomoci vyřešit chybu „Hromady JavaScriptu nedostatek paměti“.
Co je haldová paměť?
Než se podíváte na opravu chyby, je užitečné pochopit, co je haldová paměť a jak to programy využívají.
Paměť alokovaná na systémové haldě se také nazývá dynamicky alokovaná paměť. Je na programátorovi, aby využil dostupnou paměť, jak uzná za vhodné. Ještě důležitější je, že velikost haldy programu závisí na dostupné virtuální paměti, která je mu přidělena.
Pokud provozujete relativně velký projekt, může vyžadovat více paměti než výchozí přidělený blok. To může způsobit zhroucení vašeho projektu a zaprotokolování chyby „Hromady JavaScriptu nedostatek paměti“.
Jak opravit nedostatek paměti v JavaScriptu v systému Windows
Bez ohledu na vaše IDE je oprava „Hromady nedostatku paměti v JavaScriptu“ stejná.
Můžeš přidat proměnnou prostředí pomocí Ovládacích panelů zvýšit paměť přidělenou projektu Node.js.
- Otevři Nabídka Start, hledat Pokročilé systémové nastavenía vyberte nejlepší shodu.
- V dialogovém okně klikněte na Proměnné prostředía poté klikněte na Nový z obou Systémové proměnné nebo Uživatelské proměnné. První se vztahuje na všechny uživatele vašeho počítače, zatímco druhý se týká pouze vašeho aktuálního účtu
- V Název proměnné pole zadejte NODE_OPTIONS. V Proměnná hodnota pole zadejte --max-old-space-size=4096. Tato hodnota přidělí Node.js 4 GB virtuální paměti. Chcete-li nastavit jinou hodnotu, vynásobte požadovanou částku v GB číslem 1024 (hodnota proměnné musí být v MB).
- Klikněte na OK uložte změny a poté klepněte na Aplikovat a nakonec klikněte OK ještě jednou. Restartujte projekt, aby se změny projevily.
Proměnnou prostředí můžete nastavit také prostřednictvím terminálu Windows PowerShell.
Spusťte terminál PowerShell, zadejte níže uvedený příkaz a stiskněte Enter:
$env: NODE_OPTIONS="--max-old-space-size=4096"
Pokud chcete paměť haldy zvětšit pouze dočasně, spusťte před spuštěním projektu níže uvedený příkaz v terminálu PowerShell:
soubor NODE_OPTIONS=--max-old-space-size=4096
Jakmile zadáte tento příkaz, můžete nasadit/spustit svůj projekt pomocí npm spustit dev nebo svůj vlastní skript.
Nezapomeňte vždy zadat požadovanou velikost paměti v MB. Pokud tak neučiníte, může dojít k neočekávanému chování vašeho programu. Je také životně důležité nepřidělovat celou dostupnou paměť, protože to může způsobit významné selhání systému.
Jak opravit chybu JavaScript Heap Out of Memory Error v systémech MacOS a Linux
V systémech macOS a Linux je oprava haldy paměti velmi podobná. Měl by jsi exportovat proměnnou prostředí který určuje množství virtuální paměti přidělené Node.js.
Ve svém terminálu před spuštěním projektu zadejte následující příkaz a stiskněte Enter:
vývozní NODE_OPTIONS=--max-old-space-size=4096
Tím se alokují 4 GB virtuální paměti pro spouštěcí prostor Node.js. Chcete-li nastavit jiné množství paměti, vyměňte 4096 s požadovanou částkou v MB.
Výše uvedený příkaz můžete přidat do konfiguračního souboru, abyste se vyhnuli opakování procesu. Chcete-li tak učinit, postupujte stejně proces pro nastavení proměnné PATH.
Vyhněte se chybě s nedostatkem paměti haldy JavaScriptu
Této chybě se můžete vyhnout tím, že zajistíte, aby váš program neměl úniky paměti. Správná správa paměti je zásadní při psaní programů, zejména v nízkoúrovňovém jazyce.
Zatímco zvýšení přidělené paměti problém dočasně vyřeší, měli byste najít hlavní příčinu a opravit ji.