Fix: Fehler während der Initialisierung der VM konnte nicht genügend Speicherplatz für den Objekt-Heap reservieren
Obwohl Java-Applets heutzutage keine beliebte Webtechnologie sind, gibt es unzählige Gründe, eine Java Virtual Machine direkt auf einem Linux-Server zu implementieren. Wenn Sie versuchen, den Linux-Java-Befehl outright entweder auf der diskreten Hardware oder innerhalb einer eigenen VM auszuführen, kann es bei der Initialisierung der VM zu einem Fehler kommen, der nicht genügend Speicherplatz für die Objekt-Heap-Nachricht reservieren konnte.
Das sieht wahrscheinlich ziemlich merkwürdig aus, da Sie mehr als wahrscheinlich genug RAM haben, um den Befehl auszuführen, aber es ist hauptsächlich auf eine bestimmte Eigenart in der Art zurückzuführen, wie physische und virtuelle Speicherseiten verwendet werden. Wenn Sie einige relativ große Größen angeben, können Sie diese Meldung vollständig umgehen und den Befehl java wie jeden anderen ausführen.
Methode 1: Verwenden von Befehlszeilenoptionen
Wenn Sie versucht haben, Java auszuführen und diese Nachricht erhalten haben, haben Sie wahrscheinlich bereits den Befehl free ausgeführt, um sicherzustellen, dass genügend Speicherplatz für das Programm vorhanden ist.
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 bemerken, dass Sie ein Speicherproblem haben, sollten Sie andere Dinge schließen, bevor Sie es erneut versuchen. Auf der anderen Seite können diejenigen, die festgestellt haben, dass sie viel freien Speicher haben, versuchen, eine Größe direkt anzugeben.
Zum Beispiel konnten wir auf unserem Rechner den Befehl als java -Xms256m -Xmx512M ausführen und es funktionierte so, wie es sonst erwartet worden wäre. Dies beschränkt die Größe des Heapspeichers, den die Java Virtual Machine beim Start versucht, zu reservieren. Da eine ungezügelte virtuelle Maschine hypothetisch ungewöhnliche Dinge tun könnte, könnte sie Fehlermeldungen auf einem ansonsten freien System auslösen. Sie können auch mit diesen beiden Werten herumspielen, bevor Sie die richtige Kombination finden.
Dies kann unabhängig davon, wo Sie es ausführen, ein Problem darstellen, da die JVM nichts mit dem VM-Typ zu tun hat, den Sie zum Ausführen von GNU / Linux verwenden.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klickenMethode 2: Exportieren der Variablen, um die Änderung dauerhaft vorzunehmen
Wenn Sie einen funktionierenden Wert finden, können Sie ihn exportieren, um ihn für diese Sitzung dauerhaft zu machen. Zum Beispiel haben wir export _JAVA_OPTIONS = '- Xms256M -Xmx512M' von der Bash-Eingabeaufforderung verwendet und es hat uns erlaubt, den Java-Befehl ohne weitere Optionen selbst auszuführen, bis wir uns von unserem Server abgemeldet haben.
Es musste erneut ausgeführt werden, als wir uns in einer anderen Sitzung anmeldeten. Daher sollten Sie es möglicherweise zu allen relevanten Startskripts 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 suchen müssen, wenn Sie mit einer anderen Shell arbeiten.
Sie haben vielleicht bemerkt, dass nur bestimmte Hardwarekonfigurationen diese Fehlermeldung auslösen. Das liegt daran, dass es normalerweise auf Maschinen mit sehr viel physischem RAM, aber weniger Möglichkeiten für die Verwendung geschieht. Java wird versuchen, einen riesigen Block zuzuweisen, nur um zu sagen, dass es nicht möglich ist, was er als nicht genügend Speicher interpretiert.
Methode 3: Drucken von aktuellen Java-Optionen
Wenn Sie in der Befehlszeile gearbeitet haben und eine schnelle Referenz zu dem haben möchten, für das Sie den _JAVA_OPTIONS-Wert festgelegt haben, führen Sie einfach echo $ _JAVA_OPTIONS aus, und die aktuellen Werte werden sofort ausgedruckt. Dies ist nützlich für die Fehlersuche, wenn Sie versuchen, die richtigen Zahlen herauszufinden.
Denken Sie daran, dass, während dieser Fix kein anderes Herumspielen erfordert, Java die Möglichkeit ausschaltet, nicht genug Platz für die Objekt-Heap-Nachricht zu reservieren, wenn Sie jemals wirklich am kurzen Ende des virtuellen Speichers sind. Wenn dies der Fall ist, sollten Sie überprüfen, welche Prozesse gerade ausgeführt werden und gegebenenfalls den Server neu starten. Sie könnten auch mehr Auslagerungsspeicher erstellen, aber wenn dies ein Problem ist, ist es normalerweise besser, es auf eine andere Weise zu korrigieren.
In dem seltenen Fall, dass Ihre Einstellungen richtig zu sein scheinen, aber immer noch nicht funktioniert, stellen Sie sicher, dass Sie das 64-Bit-Java-Paket installiert haben, da es für dieses Problem immun sein sollte. Zusammenhängende Speicheranforderungen gelten nur für die 32-Bit-Version von Java. Wir haben in einigen wenigen Fällen festgestellt, dass die 64-Bit-Version versucht, eine 32-Bit-virtuelle Maschine zu erstellen. Die Angabe der Option -d64 in der Befehlszeile hat das Problem behoben.
PRO TIPP: Wenn das Problem bei Ihrem Computer oder Laptop / Notebook auftritt, sollten Sie versuchen, die Reimage Plus Software zu verwenden, die die Repositories durchsuchen und beschädigte und fehlende Dateien ersetzen kann. Dies funktioniert in den meisten Fällen, in denen das Problem aufgrund einer Systembeschädigung auftritt. Sie können Reimage Plus herunterladen, indem Sie hier klicken