Fix: Bei der Initialisierung der VM ist ein Fehler aufgetreten. Es konnte nicht genügend Speicherplatz für den Objektheap reserviert werden

Obwohl Java-Applets heutzutage keine beliebte Webtechnologie sind, gibt es unzählige Gründe, eine virtuelle Java-Maschine direkt auf einem Linux-Server bereitzustellen. Wenn Sie versuchen, den Linux-Java-Befehl direkt auf diskreter Hardware oder innerhalb der eigenen VM auszuführen, wird möglicherweise die Meldung "Fehler beim Initialisieren der VM konnte nicht genügend Speicherplatz für den Objektheap reservieren" angezeigt.

Dies sieht wahrscheinlich ziemlich seltsam aus, da Sie höchstwahrscheinlich über genügend RAM verfügen, um den Befehl auszuführen, aber es liegt hauptsächlich an einer bestimmten Eigenart in der Art und Weise, wie physische und virtuelle Speicherseiten verwendet werden. Wenn Sie einige relativ große Größen angeben, sollten Sie diese Nachricht vollständig umgehen und den Java-Befehl wie jeden anderen ausführen können.

Methode 1: Verwenden von Befehlszeilenoptionen

Wenn Sie versucht haben, Java auszuführen, und diese Meldung erhalten haben, haben Sie wahrscheinlich bereits den Befehl free ausgeführt, um sicherzustellen, dass genügend Speicher zur Verfügung steht, um das Programm auszuführen.

Java & kostenlose Befehle

Beachten Sie, dass wir auf unserer Testmaschine etwa 2,3 GB physischen RAM hatten und noch keine einzige Seite des virtuellen Speichers verwendet wurde. Wenn Sie feststellen, dass Sie eine Speicherkrise haben, sollten Sie andere Dinge schließen, die Sie ausgeführt haben, bevor Sie es erneut versuchen. Auf der anderen Seite können diejenigen, die festgestellt haben, dass sie über genügend freien Speicher verfügen, versuchen, eine Größe direkt anzugeben.

Zum Beispiel konnten wir auf unserem Computer den Befehl als java -Xms256m -Xmx512M ausführen und es funktionierte so, wie es sonst erwartet worden wäre. Dies schränkt die Heap-Größe ein, die die Java Virtual Machine beim Start zu reservieren versucht. Da eine ungehemmte virtuelle Maschine hypothetisch ungewöhnliche Dinge tun könnte, könnte sie Fehlermeldungen auf einem ansonsten freien System auslösen. Möglicherweise möchten Sie auch mit diesen beiden Werten herumspielen, bevor Sie die richtige Kombination finden.

Dies kann ein Problem sein, unabhängig davon, auf was Sie es ausführen, da die JVM nichts mit dem VM-Typ zu tun hat, den Sie möglicherweise zum Ausführen von GNU / Linux verwenden.

Methode 2: Exportieren der Variablen, um die Änderung dauerhaft zu machen

Wenn Sie einen Wert gefunden haben, der funktioniert, können Sie ihn exportieren, um ihn für diese Sitzung dauerhaft zu machen. Zum Beispiel haben wir export _JAVA_OPTIONS = '- Xms256M -Xmx512M' an der Bash-Eingabeaufforderung verwendet und konnten den Java-Befehl ohne weitere Optionen selbst ausführen, bis wir uns von unserem Server abgemeldet haben.

Es musste erneut ausgeführt werden, wenn wir uns in einer anderen Sitzung angemeldet haben. Sie können es daher zu relevanten Startskripten hinzufügen, wenn Sie den Java-Befehl häufig verwenden möchten. Wir haben die Zeile zu unserer .bash_login-Datei hinzugefügt und sie schien jedes Mal zu funktionieren, wenn wir eine Anmeldeaufforderung verwendeten, ohne sie erneut ausführen zu müssen, obwohl Sie möglicherweise einen anderen Speicherort dafür finden müssen, wenn Sie mit einer anderen Shell arbeiten.

Möglicherweise haben Sie bemerkt, dass nur bestimmte Hardwarekonfigurationen diese Fehlermeldung auslösen. Dies liegt daran, dass dies normalerweise auf Computern mit viel physischem RAM, aber geringeren Einschränkungen bei der Verwendung geschieht. Java wird versuchen, einen riesigen Block zuzuweisen, nur um zu erfahren, dass dies nicht möglich ist. Dies wird als Speichermangel interpretiert.

Methode 3: Drucken aktueller Java-Optionen

Wenn Sie an der Befehlszeile gearbeitet haben und eine Kurzreferenz zu dem Wert wünschen, auf den Sie derzeit den Wert _JAVA_OPTIONS festgelegt haben, führen Sie einfach echo $ _JAVA_OPTIONS aus, und die aktuellen Werte werden sofort ausgedruckt. Dies ist nützlich für die Fehlerbehebung, wenn Sie versuchen, die richtigen Ziffern zu finden.

Beachten Sie, dass für dieses Update kein anderes Herumspielen erforderlich sein sollte, Java jedoch die Meldung "Es konnte nicht genügend Speicherplatz für Objekthaufen reserviert werden" ausgibt, wenn Sie sich jemals wirklich am kurzen Ende des virtuellen Speichers befinden. Wenn dies der Fall ist, sollten Sie überprüfen, welche Prozesse gerade ausgeführt werden, und möglicherweise den Server neu starten, wenn dies eine Option ist. Sie können auch mehr Swap-Speicherplatz erstellen. Wenn dies jedoch ein Problem darstellt, ist es im Allgemeinen besser, es auf andere Weise zu korrigieren.

Stellen Sie in dem seltenen Fall, dass Ihre Einstellungen richtig zu sein scheinen, aber immer noch nicht funktionieren, sicher, dass Sie das 64-Bit-Java-Paket installiert haben, da es gegen dieses Problem immun sein sollte. Kontinuierliche Speicheranforderungen gelten nur für die 32-Bit-Version von Java. In einigen Fällen haben wir festgestellt, dass die 64-Bit-Version versucht hat, eine virtuelle 32-Bit-Maschine zu erstellen. Die Angabe der Option -d64 in der Befehlszeile hat dies für uns behoben.

Empfohlen

Fix: Minecraft reagiert nicht
Was ist eine Registrierungsanwendung für ein digitales TV-Tunergerät und sollte diese entfernt werden?
Was ist FileRepMalware und sollten Sie es entfernen?