Popravak: Došlo je do pogreške tijekom inicijalizacije VM-a, nije mogao rezervirati dovoljno prostora za hrpu objekata

Iako Java apleti danas nisu popularna web tehnologija, postoji bezbroj razloga za postavljanje Java virtualnog stroja izravno na Linux poslužitelj. Ako pokušate izravno pokrenuti Linux java naredbu ili na diskretnom hardveru ili unutar vlastitog VM-a, možda ćete dobiti poruku "dogodila se pogreška tijekom inicijalizacije VM-a, nije mogao rezervirati dovoljno prostora za hrpu objekata".

Ovo vjerojatno izgleda prilično neobično jer više nego vjerojatno imate dovoljno RAM-a za pokretanje naredbe, ali to je uglavnom zbog specifične muke u načinu na koji se fizičke i virtualne memorijske stranice koriste. Određivanje nekih relativno velikih veličina trebalo bi vam omogućiti da u potpunosti zaobiđete ovu poruku i pokrenete java naredbu onako kako biste to učinili.

Metoda 1: Korištenje opcija naredbenog retka

Ako ste pokušali pokrenuti javu i dobili ovu poruku, vjerojatno ste već pokrenuli besplatnu naredbu kako biste bili sigurni da postoji dovoljno memorije za pokretanje programa.

java i besplatne naredbe

Primijetite da smo na našem testnom stroju imali oko 2,3 GB fizičkog RAM-a i još se nije iskoristila niti jedna stranica virtualne memorije. Ako primijetite da imate problema s memorijom, tada ćete htjeti zatvoriti druge stvari koje ste pokrenuli prije nego što pokušate ponovo. S druge strane, oni koji su ustanovili da imaju dovoljno slobodne memorije mogu pokušati izravno odrediti veličinu.

Na primjer, na našem smo stroju mogli pokrenuti naredbu kao java -Xms256m -Xmx512M i radila je kao što bi se inače očekivalo. To ograničava veličinu hrpe koju Java virtualni stroj pokušava rezervirati pri pokretanju. Budući da neobuzdani virtualni stroj hipotetički može raditi neobične stvari, mogao bi bacati poruke o pogreškama na inače besplatan sustav. Možda ćete se poželjeti poigrati s te dvije vrijednosti prije nego što pronađete pravu kombinaciju.

To može biti problem bez obzira na tome što ga pokrećete, jer JVM nema nikakve veze s vrstom VM-a koji možda koristite za pokretanje GNU / Linuxa.

Metoda 2: Izvoz varijabli kako bi promjena postala trajna

Kad pronađete vrijednost koja djeluje, možete je izvesti da bi postala trajna za tu sesiju. Na primjer, koristili smo izvoz _JAVA_OPTIONS = '- Xms256M -Xmx512M' iz naredbenog retka bash i to nam je omogućilo da samostalno pokrenemo java naredbu bez ikakvih drugih opcija dok se ne odjavimo s našeg poslužitelja.

Trebalo ga je ponovno pokrenuti kad smo se prijavili u drugu sesiju, pa biste ga možda trebali dodati svim relevantnim skriptama za pokretanje ako planirate prilično često koristiti naredbu java. Dodali smo redak u našu .bash_login datoteku i činilo se da funkcionira svaki put kada smo koristili upit za prijavu bez da ga moramo ponovno pokretati, iako ćete možda morati pronaći drugo mjesto za njega ako radite s drugom ljuskom.

Možda ste primijetili da samo određene hardverske konfiguracije pokreću ovu poruku o pogrešci. To je zato što se to obično događa na strojevima s velikom količinom fizičkog RAM-a, ali nižim ograničenjima kako ga koristiti. Java će pokušati dodijeliti ogroman blok samo kako bi joj rekli da ne može, što tumači kao ponestajanje memorije.

Metoda 3: Ispis trenutnih Java opcija

Ako radite na naredbenom retku i želite brzu referencu na ono što ste trenutno postavili na vrijednost _JAVA_OPTIONS, onda jednostavno pokrenite echo $ _JAVA_OPTIONS i on će odmah ispisati trenutne vrijednosti. Ovo je korisno za rješavanje problema kada pokušavate otkriti prave brojeve za isprobavanje.

Imajte na umu da, iako ovo popravljanje ne bi trebalo zahtijevati bilo kakvo drugo igranje, Java će izbaciti poruku "ne može rezervirati dovoljno prostora za hrpu predmeta" ako se ikad nađete istinski na kratkom kraju virtualne memorije. Ako je to slučaj, morat ćete još jednom provjeriti koji se procesi trenutno izvode i možda ponovno pokrenuti poslužitelj ako je to opcija. Možete stvoriti i više prostora za zamjenu, ali ako je to problem, općenito je bolje pokušati ga ispraviti na neki drugi način.

U rijetkim slučajevima kada se čini da su vaše postavke ispravne, ali i dalje ne rade, provjerite jeste li instalirali 64-bitni Java paket jer bi trebao biti imun na ovaj problem. Neprekidni zahtjevi za memorijom primjenjuju se samo na 32-bitnu verziju Jave. Pronašli smo u nekolicini slučajeva 64-bitnu verziju koja je pokušala stvoriti 32-bitni virtualni stroj, pa nas je popravak opcije -d64 u naredbenom retku popravio.

Preporučeno

Popravak: Minecraft ne reagira
Što je aplikacija za registraciju uređaja za digitalni TV tuner i treba li je ukloniti?
Što je FileRepMalware i biste li ga trebali ukloniti