Bei jedem Versuch, das Programm auszuführen, wird wiederholt die folgende Ausnahme angezeigt.
Bei der Initialisierung der VM ist ein Fehler aufgetreten
Es konnte nicht genügend Speicherplatz für den Objekthaufen reserviert werden
Die virtuelle Java-Maschine konnte nicht erstellt werden.
Ich habe versucht, meinen virtuellen Speicher (Seitengröße) und RAM-Größe zu erhöhen, aber ohne Erfolg.
Wie kann ich diesen Fehler beseitigen?
Antworten:
Führen Sie die JVM mit
-XX:MaxHeapSize=512m
(oder einer beliebigen großen Zahl nach Bedarf) (oder-Xmx512m
kurz) aus.quelle
Dies kann auch dadurch verursacht werden, dass auf einem 32-Bit-HotSpot-VM etwas zu groß eingestellt ist, zum Beispiel:
wo dies funktionieren könnte / würde :
quelle
So beheben Sie das Problem:
Gehen Sie zu Start-> Systemsteuerung-> System-> Erweitert (Registerkarte) -> Umgebungsvariablen-> System
Variablen-> Neu: Variablenname:
_JAVA_OPTIONS
Variablenwert:-Xmx512M
Variablenname:Path
Variablenwert:
%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
Ändern Sie dies in Ihren entsprechenden Pfad.
quelle
Ich bin darauf gestoßen, als ich Javac verwendet habe, und es scheint nicht in den Befehlszeilenoptionen zu funktionieren.
Also die Lösung hier setzt es also _JAVA_OPTIONS
Und das kompiliert gut.
Dies passiert mir auf Computern mit viel RAM, aber weniger Speicherplatz. Java beschließt, einen großen Heap zuzuweisen, da es den RAM in der Maschine erkennt, ihn jedoch aufgrund von Einschränkungen nicht zuweisen darf.
quelle
32-Bit-Java benötigt zum Ausführen zusammenhängenden freien Speicherplatz im Speicher. Wenn Sie eine große Heap-Größe angeben, ist möglicherweise nicht so viel zusammenhängender freier Speicherplatz im Speicher vorhanden, selbst wenn Ihnen viel mehr freier Speicherplatz als erforderlich zur Verfügung steht.
Die Installation einer 64-Bit-Version von Java hilft in diesen Fällen. Die zusammenhängenden Speicheranforderungen gelten nur für 32-Bit-Java.
quelle
In Kombination mit -Xmx512M verwenden Sie -d64, um sicherzustellen, dass Sie eine 64-Bit-VM ausführen. Auf einer 64-Bit-Maschine dachte ich sicher, dass ich eine virtuelle 64-Bit-Maschine laufen würde, aber nein. Nach der Installation von 64-Bit-Java funktioniert die Option -d64 und -Xmx ermöglicht viel größere Speichergrößen.
quelle
Ich habe den gleichen Fehler erhalten und diesen behoben, indem ich ihn in der run.conf.bat konfiguriert habe
Führen Sie die JVM mit der Konfiguration run.conf.bat in Jboss5x aus
Wenn kein freier Speicher verfügbar ist, während Sie die Anweisung übergeben, nehmen Sie bitte Änderungen in run.conf.bat vor
quelle
Ich weiß, dass es hier bereits viele Antworten gibt, aber keine hat mir geholfen. Am Ende habe ich die Datei geöffnet
/etc/elasticsearch/jvm.options
und geändert:zu
Das hat es für mich gelöst. Hoffentlich hilft das jemand anderem hier.
quelle
Ich hatte ähnliche Probleme. Ich hatte eine 32-Bit-Version von Java auf einem 64-Bit-Computer installiert.
Durch Deinstallieren dieser Version und Installieren der 64-Bit-Version von Java. Ich konnte das Problem beheben.
quelle
Angenommen, Ihre Klasse wird
Test
im Paket aufgerufenmypackage
. Führen Sie Ihren Code folgendermaßen aus:Dadurch werden 1024 MB Heap-Speicherplatz für Ihren Code reserviert. Wenn Sie 512 MB möchten, können Sie verwenden:
Verwenden Sie wenig m
1024m
,512m
usw.quelle
Manchmal zeigt dieser Fehler an, dass der physische Speicher und der Swap auf dem Server tatsächlich voll ausgelastet sind!
Ich habe dieses Problem kürzlich auf einem Server mit RedHat Enterprise Linux 5.7 mit 48 GB RAM festgestellt. Ich fand das sogar nur rennen
verursachte den gleichen Fehler, der feststellte, dass das Problem nicht spezifisch für meine Anwendung war.
Laufen
berichteten, dass MemFree und SwapFree beide deutlich unter 1% der MemTotal- bzw. SwapTotal-Werte lagen:
Durch das Stoppen einiger anderer laufender Anwendungen auf dem Computer wurden die Zahlen für den freien Speicher etwas erhöht:
Zu diesem Zeitpunkt würde eine neue Java-Instanz in Ordnung gestartet, und ich konnte meine Anwendung ausführen.
(Für mich war dies natürlich nur eine vorübergehende Lösung. Ich habe immer noch eine herausragende Aufgabe, die auf diesem Computer ausgeführten Prozesse eingehender zu untersuchen, um festzustellen, ob etwas getan werden kann, um die nominale Speichernutzung zu reduzieren, ohne auf das Stoppen von Anwendungen zurückgreifen müssen.)
quelle
java -version
scheitern, obwohl oben noch einige freie zeigten: | (Auch der Fehler ist während der Initialisierung der VM aufgetreten. Manchmal konnte nicht genügend Speicherplatz für das Kartenmarkierungsarray reserviert werden.) Fix schien darin zu bestehen, oben zu laufen, nach den Prozessen zu suchen, die den meisten RAM verwendeten (VIRT-Spalte), sie zu töten [postgres, appdynamics for me]: |Error :
Für den Fehler "Fehler während der Initialisierung von vm aufgetreten, konnte nicht genügend Speicherplatz für den Objektheap jboss reserviert werden"
Ursache :
Unsachgemäße / unzureichende Speicherzuordnung zu unserer JVM wie unten erwähnt.
zB JAVA_OPTS = "- Xms1303m -Xmx1303m -XX: MaxPermSize = 256m" in jboss-eap-6.2 \ bin \ standalone.conf oder "JAVA_OPTS = -Xms1G -Xmx1G -XX: MaxPermSize = 256M" in jboss-eap-eap-6. \ standalone.conf.bat, das nichts anderes als die Parameter des JVM-Speicherzuweisungspools ist.
Auflösung :
Normalerweise wird nicht empfohlen, für min und max die gleiche Größe zu haben.
Wenn Sie Ihre Anwendung über Eclipse ausführen,
quelle
java -Xgcprio:throughput -Xmx:64m -Xms:64m myApp
"Ich war kürzlich mit diesem Problem konfrontiert. Ich habe 3 Java-Anwendungen, die mit 1024m oder 1280m Heap-Größe beginnen. Java überprüft den verfügbaren Speicherplatz in Swap. Wenn nicht genügend Speicher verfügbar ist, wird der JVM beendet.
Um das Problem zu beheben, musste ich mehrere Programme beenden, denen eine große Menge an virtuellem Speicher zugewiesen war.
Ich lief unter x86-64 Linux mit einem 64-Bit-JVM.
quelle
Ich hatte die richtige Menge an Speichereinstellungen, aber für mich wurde ein 64-Bit-Intellij mit 32-Bit-JVM verwendet. Nachdem ich auf 64-Bit-VM umgestellt hatte, war der Fehler behoben.
quelle
Angenommen, Sie haben genügend freien Speicher und Sie richten Ihre JVM-Argumente korrekt ein, liegt möglicherweise ein Problem mit der Speicherfragmentierung vor. Überprüfen Sie den maximalen Java-Speicher unter Windows XP .
quelle
Wenn Sie eine 32-Bit-JVM ausführen, hilft es wahrscheinlich, die Heap-Größe auf eine kleinere zu ändern. Sie können dies tun, indem Sie Argumente direkt an Java übergeben oder über Umgebungsvariablen wie die folgenden:
Für 64-Bit-JVM sollte ein größerer Heap
-Xms512M -Xmx1536M
funktionieren.Führen Sie
java -version
oder ausjava -d32
,java--d64
damit Java7 überprüft, welche Version Sie ausführen.quelle
So beheben Sie das Problem: Gehen Sie zu Start-> Systemsteuerung-> System-> Erweitert (Registerkarte) -> Umgebungsvariablen-> Systemvariablen-> Neu: Variablenname: _JAVA_OPTIONS Variablenwert: -Xmx512M
ODER
Ändern Sie den Ameisenruf wie unten gezeigt.
Es hat bei mir funktioniert.
quelle
Bei der Initialisierung der VM ist ein Fehler aufgetreten. Es konnte nicht genügend Speicherplatz für den 1572864 KB-Objektheap reserviert werden
Ich habe den Speicherwert in der Datei settings.grade 1536 auf 512 geändert und es hat geholfen
quelle
Gehen Sie zu Start-> Systemsteuerung-> System-> Erweitert (Registerkarte) -> Umgebungsvariablen-> Systemvariablen-> Neu:
quelle
Wenn Sie ein Java-Programm ausführen: - Führen Sie Ihr Programm in einem Terminal mit dem richtigen Befehl für Linux aus. Es lautet 'java -jar myprogram.jar' und fügt -Xms256m -Xmx512m hinzu, zum Beispiel: 'java -jar myprogram.jar Xms256m -Xmx512m '
Wenn Sie ein .sh-Skript (Linux, Mac?) Oder ein .bat-Skript (Windows) ausführen, öffnen Sie das Skript und suchen Sie nach den Java-Optionen, falls vorhanden, und erhöhen Sie den Speicher.
Wenn all dies nicht funktioniert, überprüfen Sie Ihre Prozesse (Strg + Alt + Löschen unter Windows) (ps aux unter Linux / Mac) und beenden Sie die Prozesse, die viel Speicher belegen und für Ihr Betriebssystem nicht erforderlich sind! => Versuchen Sie, Ihr Programm erneut auszuführen.
quelle
In CASSANDRA_HOME / bin / cassandra.bat finden Sie folgende Konfiguration
Sie können 2G auf eine kleinere Zahl reduzieren, z. B. 1G oder noch weniger, und es sollte funktionieren.
Wenn Sie unter Unix arbeiten, ändern Sie die SH-Datei entsprechend.
quelle
Ich habe den gleichen Fehler erhalten und er wurde behoben, als ich temporäre Dateien mit% temp% löschte und Eclipse neu startete.
quelle
Manchmal bezieht es sich auf
Wenn Sie es auf Folgendes einstellen:
Es sollte funktionieren.
quelle
Ersetzen Sie
-Xmx2G
mit-Xms512M
oder einer größeren Speichergröße in cassandra.bat Datei in cassandra ist.quelle
Öffnen Sie die Datei gradle.properties im Android-Ordner.
Ersetzen Sie diese Zeile:
mit:
Erläuterung: Maximales Limit aus Gradle-Dokument:
Wenn in der angeforderten Build-Umgebung keine maximale Heap-Größe angegeben ist, verwendet der Daemon bis zu 512 MB Heap.
quelle
Sie müssen nichts weiter tun, als in der POM-Datei wie unten beschrieben zu chnagen
quelle