Fix: Ett fel inträffade under initieringen av VM kunde inte reservera tillräckligt med plats för objekthöga
Även om Java-appletar inte är en populär webbteknologi idag finns det otaliga skäl att distribuera en virtuell Java-maskin direkt på en Linux-server. Om du försöker köra Linux java-kommandot direkt på diskret hårdvara eller inuti sin egen VM, kan du få ett fel som inträffade under initieringen av VM kunde inte reservera tillräckligt med utrymme för objekthoppmeddelande.
Det här ser nog ut ganska udda eftersom du förmodligen har tillräckligt med RAM för att köra kommandot, men det beror till stor del på att fysiska och virtuella minnessidor används. Om du anger några relativt stora storlekar bör du helt och hållet förbikoppla det här meddelandet och köra java-kommandot på samma sätt som du skulle.
Metod 1: Använda kommandoradsalternativ
Om du har försökt att köra java och fått det här meddelandet har du förmodligen redan kört det fria kommandot för att se till att det finns gott om minne för att köra programmet.
Observera att på vår testmaskin hade vi cirka 2, 3 GB fysiskt RAM, och inte en enda sida med virtuellt minne hade ännu använts. Om du märker att du har en minnesknapp, så vill du stänga andra saker som du har kört innan du försöker igen. Å andra sidan kan de som fann att de har gott om ledigt minne försöka specificera en storlek direkt.
Till exempel på vår maskin kunde vi köra kommandot som java-Xms256m -Xmx512M och det fungerade som det annars skulle ha förväntats. Detta begränsar den hålstorlek som Java-virtuell maskin försöker reservera vid uppstart. Eftersom en otränad virtuell maskin kan hypotetiskt göra ovanliga saker kan det kasta felmeddelanden på ett annat fritt system. Du kan också vilja leka med de två värdena innan du hittar rätt kombination.
Detta kan vara ett problem oavsett vad du kör det på eftersom JVM inte har något med den typ av VM du kan använda för att köra GNU / Linux.
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka härMetod 2: Exportera variablerna för att göra ändringen permanent
När du hittar ett värde som fungerar kan du exportera det för att göra det permanent för den sessionen. Vi använde till exempel export _JAVA_OPTIONS = '- Xms256M -Xmx512M' från bash-kommandotolken och det tillät oss att springa java-kommandot i sig utan några andra alternativ tills vi loggade ut från vår server.
Det behövde springas igen när vi loggade in i en annan session, så du kanske vill lägga till den till några relevanta startskript om du planerar att använda java-kommandot ganska ofta. Vi lade till linjen till vår .bash_login-fil och det verkade fungera varje gång vi använde en inloggningsprompning utan att behöva köra den igen, men du kanske måste hitta en annan plats för den om du arbetar med ett annat skal.
Du kanske har märkt att endast vissa hårdvarukonfigurationer utlöser detta felmeddelande. Det beror på att det vanligtvis händer på maskiner med mycket fysiskt RAM men lägre gränser för hur man använder den. Java kommer att försöka att allokera ett stort block bara för att få veta att det inte kan, vilket det tolkar som att springa ur minnet.
Metod 3: Skriv ut nuvarande Java-alternativ
Om du har arbetat på kommandoraden och vill ha en snabb referens till vad du för närvarande har satt till _JAVA_OPTIONS-värdet, kör du enkelt echo $ _JAVA_OPTIONS och det kommer genast att skriva ut de aktuella värdena. Det här är användbart för felsökning när du försöker lista ut rätt siffror för att försöka.
Tänk på att även om den här lösningen inte kräver någon annan spelning, kommer Java att slänga ut det som inte kunde reservera tillräckligt med utrymme för objekthögmeddelande om du någonsin hittar dig genuint i den korta änden av det virtuella minnet. Om så är fallet vill du dubbelklicka på vilka processer som körs och eventuellt starta om servern om det är ett alternativ. Du kan också skapa mer bytesutrymme, men om det här är ett problem är det generellt bättre att försöka rätta det på något annat sätt.
I det sällsynta fallet att dina inställningar verkar vara rätt men det fortfarande inte fungerar, se till att du har installerat 64-bitars Java-paket eftersom det borde vara immun för detta problem. Kontinuerliga minneskrav gäller endast 32-bitarsversionen av Java. Vi hittade i en handfull fall försökte 64-bitarsversionen skapa en 32-bitars virtuell maskin, så att specificera -d64-alternativet på kommandoraden fixade det för oss.
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här