Popravek: Napaka med inicializacijo VM ni mogla rezervirati dovolj prostora za kopico predmetov

Čeprav apleti Java danes niso priljubljena spletna tehnologija, obstaja nešteto razlogov za namestitev navideznega računalnika Java neposredno na strežnik Linux. Če poskušate ukaz Linux Java dokončno zagnati na ločeni strojni opremi ali znotraj lastne VM, boste morda dobili sporočilo »Napaka med inicializacijo VM ni mogla rezervirati dovolj prostora za kopico predmetov«.

To se verjetno zdi precej čudno, ker imate več kot verjetno dovolj RAM-a za zagon ukaza, vendar je to v veliki meri posledica posebne potege v načinu navajanja strani fizičnega in navideznega pomnilnika. Določitev nekaterih razmeroma velikih velikosti bi vam morala omogočiti, da popolnoma zaobidete to sporočilo in zaženete ukaz java tako, kot bi to storili.

1. način: Uporaba možnosti ukazne vrstice

Če ste poskusili zagnati javo in ste dobili to sporočilo, ste verjetno že zagnali brezplačni ukaz, da se prepričate, ali je na voljo dovolj pomnilnika za zagon programa.

java in brezplačni ukazi

Upoštevajte, da smo na našem testnem računalniku imeli približno 2,3 GB fizičnega RAM-a in še nobena stran navideznega pomnilnika ni bila uporabljena. Če opazite, da imate težave s pomnilnikom, boste pred ponovnim poskusom želeli zapreti druge stvari, ki ste jih že izvedli. Po drugi strani pa lahko tisti, ki so ugotovili, da imajo dovolj prostega pomnilnika, poskušajo neposredno določiti velikost.

Na našem računalniku smo na primer lahko zagnali ukaz kot java -Xms256m -Xmx512M in je deloval, kot bi sicer pričakovali. To omejuje velikost kopice, ki jo navidezni stroj Java poskuša rezervirati ob zagonu. Ker bi lahko neoviran navidezni stroj hipotetično počel nenavadne stvari, bi lahko sprožil sporočila o napakah na sicer brezplačen sistem. Morda se boste morda želeli poigrati s tema dvema vrednostma, preden boste našli pravo kombinacijo.

To je lahko težava ne glede na to, na katerem jo izvajate, saj JVM nima nič skupnega s tipom VM, ki ga morda uporabljate za zagon GNU / Linux.

2. način: izvoz spremenljivk, da sprememba postane trajna

Ko najdete vrednost, ki deluje, jo lahko izvozite, da postane trajna za to sejo. Na primer, iz ukaznega poziva bash smo uporabili izvoz _JAVA_OPTIONS = '- Xms256M -Xmx512M' in nam je omogočil, da smo ukaz java zagnali sami, brez kakršnih koli drugih možnosti, dokler se nismo odjavili s strežnika.

Ko smo se prijavili v drugo sejo, ga je bilo treba znova zagnati, zato ga boste morda želeli dodati ustreznim zagonskim skriptom, če nameravate ukaz java uporabljati pogosto. V našo datoteko .bash_login smo dodali vrstico in zdelo se je, da deluje vsakič, ko smo uporabili poziv za prijavo, ne da bi ga bilo treba znova zagnati, čeprav boste morda morali najti drugo lokacijo zanj, če delate z drugo lupino.

Morda ste opazili, da samo nekatere konfiguracije strojne opreme sprožijo to sporočilo o napaki. To je zato, ker se ponavadi dogaja na strojih z veliko fizičnega RAM-a, vendar nižje omejitve, kako ga uporabiti. Java bo poskušala dodeliti ogromen blok, le da mu bodo povedali, da ne more, kar pa razlaga kot pomanjkanje pomnilnika.

3. način: Tiskanje trenutnih možnosti Java

Če ste delali v ukazni vrstici in želite hiter sklic na to, na kar ste trenutno nastavili vrednost _JAVA_OPTIONS, preprosto zaženite echo $ _JAVA_OPTIONS in takoj bo natisnil trenutne vrednosti. To je koristno za odpravljanje težav, ko poskušate ugotoviti prave številke, ki jih želite poskusiti.

Upoštevajte, da čeprav ta popravek ne bi smel zahtevati nobenega drugega igranja, bo Java vrgla sporočilo "ne morem rezervirati dovolj prostora za kopico predmetov", če se kdaj resnično znajdete na kratkem koncu navideznega pomnilnika. V tem primeru boste še enkrat želeli preveriti, kateri procesi se trenutno izvajajo, in morda znova zagnati strežnik, če je to možnost. Lahko bi ustvarili tudi več prostora za zamenjavo, vendar če je to težava, je na splošno bolje, da jo poskusite popraviti na kakšen drug način.

V redkih primerih, ko se zdi, da so vaše nastavitve pravilne, vendar še vedno ne delujejo, preverite, ali ste namestili 64-bitni paket Java, ker bi moral biti odporen na to težavo. Neprekinjene zahteve glede pomnilnika veljajo le za 32-bitno različico Jave. V peščici primerov smo ugotovili, da je 64-bitna različica poskušala ustvariti 32-bitni navidezni stroj, zato smo jo določili z možnostjo -d64 v ukazni vrstici.

Priporočena

Popravek: Minecraft se ne odziva
Kaj je aplikacija za registracijo naprave za digitalni TV sprejemnik in jo je treba odstraniti?
Kaj je FileRepMalware in ali ga morate odstraniti