Korjaus: Virhe virtuaalikoneen alustuksen aikana ei voinut varata tarpeeksi tilaa objektin kasalle

Korjaus: Virhe virtuaalikoneen alustuksen aikana ei voinut varata tarpeeksi tilaa objektin kasalle

Fix Error Occurred During Initialization Vm Could Not Reserve Enough Space

Vaikka Java-sovelmat eivät ole nykyään suosittu verkkotekniikka, Java-virtuaalikoneen asentamiseen suoraan Linux-palvelimeen on lukemattomia syitä. Jos yrität suorittaa Linuxin java-komennon suoraan joko erillisellä laitteistolla tai oman virtuaalikoneen sisällä, saatat saada 'Virhe virtuaalikoneen alustuksen aikana tapahtui virhe ei voinut varata tarpeeksi tilaa objektin kasalle' -sanomalle.



Tämä näyttää todennäköisesti melko oudolta, koska sinulla on todennäköisesti riittävästi RAM-muistia komennon suorittamiseen, mutta se johtuu suurelta osin erityisestä oudosta tavasta, jolla fyysiset ja virtuaaliset muistisivut käytetään. Eräiden suhteellisen suurien kokojen määrittämisen pitäisi antaa sinun ohittaa tämä viesti kokonaan ja suorittaa java-komento samalla tavalla kuin mitä tahansa muuta.



Tapa 1: Komentorivivalintojen käyttäminen

Jos olet yrittänyt ajaa Java-ohjelmaa ja saanut tämän viestin, olet todennäköisesti jo suorittanut ilmaisen komennon varmistaaksesi, että muistia on riittävästi ohjelman suorittamiseen.

java ja ilmaiset komennot



Huomaa, että testikoneellamme oli noin 2,3 Gt fyysistä RAM-muistia eikä yhtään virtuaalimuistisivua ollut vielä käytetty. Jos huomaat, että sinulla on muistin häiriö, sinun kannattaa sulkea muut käynnissä olevat asiat ennen kuin yrität sitä uudelleen. Toisaalta ne, jotka huomasivat, että heillä on paljon vapaata muistia, voivat yrittää määrittää koon suoraan.

Esimerkiksi koneellamme pystyimme suorittamaan komennon nimellä java -Xms256m -Xmx512M ja se toimi kuten muuten olisi odotettu. Tämä rajoittaa kasan kokoa, jonka Java-virtuaalikone yrittää varata käynnistyksen yhteydessä. Koska rajoittamaton virtuaalikone voisi hypoteettisesti tehdä epätavallisia asioita, se saattaa heittää virheilmoituksia muuten vapaalle järjestelmälle. Voit myös pelata näiden kahden arvon kanssa ennen kuin löydät oikean yhdistelmän.

Tämä voi olla ongelma riippumatta siitä, mitä käytät sitä, koska JVM: llä ei ole mitään tekemistä sen kanssa, minkä tyyppistä virtuaalikoneita saatat käyttää GNU / Linuxin suorittamiseen.



Tapa 2: Muuttujien vieminen muutoksen muuttamiseksi pysyväksi

Kun löydät toimivan arvon, voit viedä sen pysyväksi istunnolle. Esimerkiksi käytimme vientiä _JAVA_OPTIONS = ’- Xms256M -Xmx512M’ bash-komentokehotteesta ja se antoi meille mahdollisuuden suorittaa java-komento itse ilman muita vaihtoehtoja, kunnes kirjauduimme ulos palvelimeltamme.

Se oli suoritettava uudelleen, kun kirjauduimme sisään toiseen istuntoon, joten kannattaa ehkä lisätä se mihin tahansa asiaankuuluvaan käynnistyskomentosarjaan, jos aiot käyttää java-komentoa melko usein. Lisäsimme rivin .bash_login-tiedostoon ja se näytti toimivan joka kerta, kun käytimme kirjautumiskehotetta joutumatta suorittamaan sitä uudelleen, vaikka sinun on ehkä löydettävä sille toinen sijainti, jos työskentelet eri kuoren kanssa.

Olet ehkä huomannut, että vain tietyt laitteistokokoonpanot käynnistävät tämän virhesanoman. Tämä johtuu siitä, että se tapahtuu yleensä koneissa, joissa on paljon fyysistä RAM-muistia, mutta alhaisemmat ulimitit sen käytöstä. Java yrittää kohdistaa valtavan lohkon vain sanomaan sille, että se ei voi, jonka se tulkitsee muistin loppuvan.

Tapa 3: Nykyisten Java-asetusten tulostaminen

Jos olet työskennellyt komentorivillä ja haluat nopeasti viitteen siihen, mihin olet asettanut _JAVA_OPTIONS-arvon, suorita yksinkertaisesti echo $ _JAVA_OPTIONS ja se tulostaa heti nykyiset arvot. Tästä on hyötyä vianetsinnässä, kun yrität selvittää oikeat numerot, joita kokeilla.

Muista, että vaikka tämän korjauksen ei pitäisi vaatia mitään muuta pelaamista, Java heittää pois 'ei voitu varata tarpeeksi tilaa esineiden kasalle' -viestin, jos huomaat koskaan aidosti virtuaalimuistin lyhyessä päässä. Jos näin on, sinun on tarkistettava parhaillaan käynnissä olevat prosessit ja käynnistettävä palvelin uudelleen, jos se on vaihtoehto. Voit myös luoda enemmän vaihtotilaa, mutta jos tämä on ongelma, kannattaa yleensä yrittää korjata se jollakin muulla tavalla.

Harvinaisissa tapauksissa, joissa asetukset näyttävät olevan oikeita, mutta se ei silti toimi, varmista, että olet asentanut 64-bittisen Java-paketin, koska sen pitäisi olla immuuni tälle ongelmalle. Yhtenäiset muistivaatimukset koskevat vain 32-bittistä Java-versiota. Löysimme muutamissa tapauksissa 64-bittinen versio yrittänyt luoda 32-bittisen virtuaalikoneen, joten -d64 -vaihtoehdon määrittäminen komentorivillä korjasi sen meille.

3 minuuttia luettu