NUSTATYTI: Inicijuojant VM įvyko klaida negalėjo rezervuoti pakankamai vietos objekto kaupui



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

Nors šiais laikais „Java“ programėlės nėra populiarios interneto technologijos, yra begalė priežasčių „Java“ virtualią mašiną dislokuoti tiesiai į „Linux“ serverį. Jei bandysite paleisti „Linux java“ komandą tiesiai diskrečioje aparatinėje įrangoje arba savo VM viduje, galite gauti pranešimą „VM inicijuojant įvyko klaida negalėjo rezervuoti pakankamai vietos objekto kaupui“.



Tai tikriausiai atrodo gana keista, nes daugiau nei tikėtina, kad turite pakankamai RAM, kad paleistumėte komandą, tačiau daugiausia dėl to, kad fiziniai ir virtualiosios atminties puslapiai naudojami įprastu būdu. Nurodę gana didelius dydžius, turėtumėte visiškai apeiti šį pranešimą ir paleisti „java“ komandą taip, kaip darytumėte bet kuris kitas.



1 metodas: Komandų eilutės parinkčių naudojimas

Jei bandėte paleisti „Java“ ir gavote šį pranešimą, tikriausiai jau esate paleidę nemokamą komandą, kad įsitikintumėte, jog yra pakankamai atminties atsargų programai paleisti.



„Java“ ir nemokamos komandos

Atkreipkite dėmesį, kad bandomojoje mašinoje mes turėjome maždaug 2,3 GB fizinės operatyviosios atminties, o dar nebuvo panaudotas nė vienas virtualiosios atminties puslapis. Jei pastebėsite, kad turite atminties trūkumų, prieš bandydami dar kartą, norėsite uždaryti kitus paleistus dalykus. Kita vertus, tie, kurie nustatė, kad turi daug laisvos atminties, gali bandyti tiesiogiai nurodyti dydį.

Pvz., Savo kompiuteryje mes galėjome paleisti komandą kaip java -Xms256m -Xmx512M ir ji veikė taip, kaip būtų galima tikėtis kitu atveju. Tai riboja kaupo dydį, kurį „Java“ virtuali mašina bando rezervuoti paleidimo metu. Kadangi nevaržoma virtuali mašina hipotetiškai gali atlikti neįprastus dalykus, ji gali mesti klaidų pranešimus šiaip nemokamoje sistemoje. Taip pat galbūt norėsite pažaisti šias dvi vertybes, kol rasite tinkamą derinį.



Tai gali būti problema, neatsižvelgiant į tai, ką jūs naudojate, nes JVM neturi nieko bendro su VM tipu, kurį galbūt naudojate paleisdami GNU / Linux.

2 metodas: Kintamųjų eksportavimas, kad pakeitimas būtų nuolatinis

Radę veikiančią vertę, galite ją eksportuoti, kad ji būtų nuolatinė tam seansui. Pavyzdžiui, iš „bash“ komandų eilutės naudojome eksportą _JAVA_OPTIONS = ’- Xms256M -Xmx512M’ ir tai leido mums pačiai paleisti „java“ komandą be jokių kitų parinkčių, kol atsijungsime nuo serverio.

Jį reikėjo paleisti dar kartą, kai prisijungėme prie kito seanso, todėl galbūt norėsite jį pridėti prie visų susijusių paleisties scenarijų, jei planuojate gana dažnai naudoti „java“ komandą. Pridėjome eilutę prie savo .bash_login failo ir atrodė, kad ji veikia kiekvieną kartą, kai naudojome prisijungimo raginimą, nebereikėję jos paleisti iš naujo, nors jums gali tekti rasti kitą jos vietą, jei dirbate su kitu apvalkalu.

Galbūt pastebėjote, kad šį klaidos pranešimą suaktyvina tik tam tikros aparatūros konfigūracijos. Taip yra todėl, kad dažniausiai tai vyksta mašinose, turinčiose daug fizinės operatyviosios atminties, tačiau mažesnės jos naudojimo galimybės. „Java“ bandys skirti didžiulį bloką tik tam, kad būtų pasakyta, jog jis negali, kurio, jos manymu, trūksta atminties.

3 metodas: dabartinių „Java“ parinkčių spausdinimas

Jei dirbote komandinėje eilutėje ir norite greitai sužinoti, į ką šiuo metu nustatėte vertę _JAVA_OPTIONS, tiesiog paleiskite echo $ _JAVA_OPTIONS ir ji iškart atspausdins dabartines reikšmes. Tai naudinga šalinant triktis, kai bandote išsiaiškinti tinkamus skaitmenis, kuriuos reikia išbandyti.

Turėkite omenyje, kad nors šiam pataisymui neturėtų reikėti jokio kito žaidimo, „Java“ išmes pranešimą „negalėjo rezervuoti pakankamai vietos objektų kaupui“, jei kada nors tikrai atsidursite trumpame virtualiosios atminties gale. Tokiu atveju turėsite dar kartą patikrinti, kokie procesai šiuo metu vykdomi, ir galbūt paleiskite serverį iš naujo, jei tai yra galimybė. Taip pat galite sukurti daugiau apsikeitimo vietos, tačiau jei tai yra problema, geriau pabandyti ją ištaisyti kitu būdu.

Retais atvejais, kai atrodo, kad jūsų nustatymai yra teisingi, bet vis tiek neveikia, įsitikinkite, kad įdiegėte 64 bitų „Java“ paketą, nes jis turėtų būti apsaugotas nuo šios problemos. Gretutinės atminties reikalavimai taikomi tik 32 bitų „Java“ versijai. Nedaugeliu atvejų 64 bitų versija bandė sukurti 32 bitų virtualią mašiną, todėl komandinėje eilutėje nurodžius -d64 parinktį, tai mums pataisė.

3 minutes perskaityta