Ayusin: Naganap ang error sa panahon ng pagsisimula ng VM na hindi makapagreserba ng sapat na puwang para sa tambak ng object



Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema

Kahit na ang mga applet ng Java ay hindi isang tanyag na teknolohiyang web sa mga panahong ito, maraming mga kadahilanan upang mag-deploy nang direkta sa isang virtual server sa isang Java server. Kung susubukan mong patakbuhin ang utos ng Linux java nang direkta alinman sa discrete hardware o sa loob ng sarili nitong VM, maaari kang makakuha ng isang 'naganap na error sa panahon ng pagsisimula ng VM ay hindi maaaring magreserba ng sapat na puwang para sa object heap' na mensahe.



Marahil ay mukhang kakaiba ito dahil higit sa malamang na may sapat kang RAM upang patakbuhin ang utos, ngunit higit sa lahat ito ay sanhi ng isang tukoy na quirk sa paraan ng paggamit ng pisikal at virtual na mga pahina ng memorya. Ang pagtukoy ng ilang medyo malalaking sukat ay dapat pahintulutan kang ganap na i-bypass ang mensaheng ito at patakbuhin ang utos ng java sa paraang gusto mo sa iba pa.



Paraan 1: Paggamit ng Mga Pagpipilian sa Linya ng Command

Kung sinubukan mong patakbuhin ang java at makuha ang mensaheng ito, malamang na nagpatakbo ka na ng libreng utos upang matiyak na mayroong sapat na mga supply ng memorya upang mapatakbo ang programa.



java at mga libreng utos

Pansinin na sa aming test machine mayroon kaming 2.3 GB ng pisikal na RAM at wala pang solong pahina ng virtual na memorya ang nagamit pa. Kung napansin mong mayroon kang isang memory crunch, gugustuhin mong isara ang iba pang mga bagay na iyong pinatakbo bago subukang muli. Sa kabilang banda, ang mga nalaman na mayroon silang maraming libreng memorya ay maaaring subukang tukuyin ang isang laki nang direkta.

Halimbawa, sa aming machine nagawa naming patakbuhin ang utos bilang java -Xms256m -Xmx512M at gumana ito tulad ng inaasahan. Pinipigilan nito ang laki ng magbunton na sinusubukan ng Java virtual machine na magreserba sa pagsisimula. Dahil ang isang walang pigil na virtual machine ay maaaring makapagpalagay ng hindi karaniwang mga bagay, maaari itong magtapon ng mga mensahe ng error sa isang malayang libreng system. Maaaring gusto mo ring maglaro kasama ang dalawang halagang iyon bago mo makita ang tamang kombinasyon.



Maaari itong maging isang isyu anuman ang iyong pagpapatakbo nito dahil ang JVM ay walang kinalaman sa uri ng VM na maaari mong gamitin upang patakbuhin ang GNU / Linux.

Paraan 2: Pag-export ng Mga Variable upang Gawing Permanenteng Pagbabago

Kapag nakakita ka ng isang halaga na gumagana maaari mo itong i-export upang gawin itong permanenteng para sa session na iyon. Halimbawa, ginamit namin ang pag-export _JAVA_OPTIONS = ’- Xms256M -Xmx512M’ mula sa prompt ng bash command at pinayagan kaming patakbuhin ang utos ng java nang mag-isa nang walang anumang iba pang mga pagpipilian hanggang sa mag-log out kami sa aming server.

Kailangan itong patakbuhin muli kapag nag-log in kami sa isa pang session, kaya baka gusto mong idagdag ito sa anumang nauugnay na mga script ng pagsisimula kung balak mong gamitin ang utos ng Java nang madalas. Idinagdag namin ang linya sa aming .bash_login file at tila gagana ito sa tuwing gumagamit kami ng isang prompt sa pag-login nang hindi na kinakailangang patakbuhin ito muli, kahit na maaaring kailangan mong maghanap ng ibang lokasyon para dito kung nagtatrabaho ka sa ibang shell.

Maaaring napansin mo na ang ilang mga pag-configure lamang ng hardware ang nagpapalitaw ng mensahe ng error na ito. Iyon ay dahil kadalasang nangyayari ito sa mga machine na may napakaraming pisikal na RAM ngunit mas mababa ang mga ulit para sa kung paano ito gamitin. Susubukan ng Java na maglaan ng isang malaking bloke lamang upang masabihan na hindi nito magagawa, na binibigyang kahulugan nito bilang nauubusan ng memorya.

Paraan 3: Pagpi-print ng Kasalukuyang Mga Pagpipilian sa Java

Kung nagtatrabaho ka sa linya ng utos at nais ng isang mabilis na sanggunian sa kung ano ang kasalukuyang itinakda mo ang halagang _JAVA_OPTIONS, pagkatapos ay patakbuhin lamang ang echo $ _JAVA_OPTIONS at agad nitong mai-print ang kasalukuyang mga halaga. Kapaki-pakinabang ito para sa pag-troubleshoot kapag sinusubukan mong malaman ang tamang mga numerong susubukan.

Tandaan na habang ang pag-aayos na ito ay hindi dapat mangailangan ng anumang iba pang paglalaro sa paligid, itatapon ng Java ang mensahe na 'hindi maipareserba ang sapat na puwang para sa tambak ng object' kung sakaling makita mo ang iyong sarili na tunay sa maikling dulo ng virtual memory. Kung ito ang kaso, gugustuhin mong i-double check kung anong mga proseso ang kasalukuyang tumatakbo at posibleng i-restart ang server kung pagpipilian iyan. Maaari ka ring lumikha ng mas maraming puwang ng pagpapalit, ngunit kung ito ay isang isyu sa pangkalahatan ay mas mahusay na subukan at iwasto ito sa ibang paraan.

Sa bihirang kaso na ang iyong mga setting ay mukhang tama ngunit hindi pa rin ito gumagana, tiyaking na-install mo ang 64-bit na Java package dahil dapat itong maging immune sa problemang ito. Nalalapat lang ang magkakalakip na mga kinakailangan sa memorya sa 32-bit na bersyon ng Java. Natagpuan namin sa isang maliit na kaso ang 64-bit na bersyon na sinubukan upang lumikha ng isang 32-bit virtual machine, kaya't tinutukoy ang pagpipilian na -d64 sa linya ng utos na naayos ito para sa amin.

Basahin ang 3 minuto