Dažna problema dirbant su „JavaScript Node.js“ projektu yra klaida „JavaScript krūva iš atminties“. Ši klaida dažniausiai įvyksta, kai numatytosios atminties, kurią jūsų sistema skyrė Node.js, nepakanka dideliam projektui vykdyti.
Klaida dažnai pasitaiko nesvarbu, ar vykdote projektą sistemoje „Windows“, „MacOS“ ar „Linux“ paskirstyme, pvz., „Ubuntu“. Laimei, yra keletas paprastų pataisymų, kurie gali padėti išspręsti klaidą „JavaScript krūva trūksta atminties“.
Kas yra krūvos atmintis?
Prieš sprendžiant, kaip ištaisyti klaidą, naudinga suprasti, kas yra krūvos atmintis ir kaip programos tai naudoja.
Sistemos krūvoje skirta atmintis taip pat vadinama dinamiškai paskirstyta atmintimi. Programuotojas turi naudoti turimą atmintį taip, kaip jam atrodo tinkama. Dar svarbiau, kad programos krūvos dydis priklauso nuo jai skirtos virtualios atminties.
Jei vykdote santykinai didelį projektą, jam gali prireikti daugiau atminties, nei numatyta numatytoji paskirta dalis. Dėl to projektas gali sugesti ir užregistruoti klaidą „JavaScript krūva iš atminties“.
Kaip ištaisyti „JavaScript“ krūvą, kurioje trūksta atminties sistemoje „Windows“.
Nepriklausomai nuo jūsų IDE, „JavaScript krūvos atmintis“ pataisa yra identiška.
Tu gali pridėkite aplinkos kintamąjį naudodami valdymo skydelį padidinti Node.js projektui skirtą atmintį.
- Atidaryk Pradžios meniu, Ieškoti Išplėstiniai sistemos nustatymaiir pasirinkite geriausią atitiktį.
- Dialogo lange spustelėkite aplinkos įvairovė, tada spustelėkite Nauja iš bet kurio Sistemos kintamieji arba Vartotojo kintamieji. Pirmoji taikoma visiems jūsų kompiuterio naudotojams, o antroji – tik jūsų dabartinei paskyrai
- Viduje Kintamojo pavadinimas įveskite lauką NODE_OPTIONS. Viduje Kintamoji vertė įveskite lauką --max-old-space-size=4096. Ši vertė Node.js skirs 4 GB virtualios atminties. Norėdami nustatyti kitą reikšmę, reikiamą sumą GB padauginkite iš 1024 (kintamojo reikšmė turi būti MB).
- Spustelėkite Gerai Norėdami išsaugoti pakeitimus, spustelėkite Taikyti ir galiausiai spustelėkite Gerai dar kartą. Iš naujo paleiskite projektą, kad pakeitimai įsigaliotų.
Taip pat galite nustatyti aplinkos kintamąjį naudodami „Windows PowerShell“ terminalą.
Paleiskite „PowerShell“ terminalą, įveskite toliau pateiktą komandą ir paspauskite Enter:
$env: NODE_OPTIONS="--max-old-space-size=4096"
Jei norite tik laikinai padidinti krūvos atmintį, prieš paleisdami projektą paleiskite toliau pateiktą komandą PowerShell terminale:
rinkinys NODE_OPTIONS=--max-old-space-size=4096
Įvedę šią komandą, galite įdiegti / paleisti savo projektą naudodami npm paleisti dev arba savo scenarijų.
Visada nepamirškite įvesti reikiamo atminties dydžio MB. To nepadarius, jūsų programa gali sukelti netikėtą elgesį. Taip pat labai svarbu neskirti visos turimos atminties, nes tai gali sukelti rimtą sistemos gedimą.
Kaip ištaisyti „JavaScript“ krūvos atminties klaidą „MacOS“ ir „Linux“.
„MacOS“ ir „Linux“ krūvos atminties taisymas yra labai panašus. Tu turėtum eksportuoti aplinkos kintamąjį kuris nurodo Node.js skirtos virtualios atminties kiekį.
Prieš paleisdami projektą savo terminale įveskite šią komandą ir paspauskite Enter:
eksportuoti NODE_OPTIONS=--max-old-space-size=4096
Tai paskirs 4 GB virtualios atminties Node.js vykdymo erdvei. Norėdami nustatyti kitą atminties kiekį, pakeiskite 4096 su reikiama suma MB.
Aukščiau pateiktą komandą galite pridėti prie savo konfigūracijos failo, kad procesas nesikartotų. Norėdami tai padaryti, atlikite tą patį PATH kintamojo nustatymo procesas.
Venkite „JavaScript“ krūvos atminties klaidos
Galite išvengti šios klaidos užtikrindami, kad jūsų programoje nėra atminties nutekėjimų. Tinkamas atminties valdymas yra labai svarbus rašant programas, ypač žemo lygio kalba.
Padidinus skirtą atmintį problema bus laikinai išspręsta, turėtumėte rasti pagrindinę priežastį ir ją išspręsti.