Ich erhalte diese Nachricht während der Erstellung meines Projekts
java.lang.OutOfMemoryError: Java-Heapspeicher
Wie kann ich den Heap-Speicherplatz erhöhen? Ich habe 8 GB oder RAM. Es ist unmöglich, dass Maven so viel verbraucht. Ich fand dies http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the -java-Heap-Speicher-für-Maven-2-unter-Linux / Wie geht das unter Linux, aber ich bin unter Windows 7. Wie kann ich den Java-Heap-Speicherplatz unter Windows ändern?
Antworten:
Die einzustellende Umgebungsvariable ist
MAVEN_OPTS
beispielsweiseMAVEN_OPTS=-Xmx1024m
. Diemaxmem
Konfiguration im POM gilt nur, wenn Sie das Compiler-Plugin so einstellen, dass es sichjavac
in eine neue JVM einfügt. Andernfalls wird das Plugin in derselben VM wie Maven und damit in dem über die Befehlszeile über das übergebenen Speicher ausgeführtMAVEN_OPTS
.So legen Sie MAVEN_OPTS unter Windows 7 fest:
-Xmx1024m
(oder mehr).Öffnen Sie ein neues Befehlsfenster und führen Sie es aus
mvn
.quelle
Wenn Ihnen während des todsicheren (oder ausfallsicheren) JUnit-Testlaufs der Heap-Speicherplatz ausgeht, hilft Ihnen das Ändern von MAVEN_OPTS möglicherweise nicht weiter. Ich habe immer wieder verschiedene Konfigurationen in MAVEN_OPTS ausprobiert, ohne Glück, bis ich diesen Beitrag gefunden habe , der das Problem behoben hat.
Grundsätzlich verzweigen sich die JUnits in ihre eigene Umgebung und ignorieren die Einstellungen in MAVEN_OPTS. Sie müssen todsichere Daten in Ihrem POM konfigurieren, um mehr Speicher für die JUnits hinzuzufügen.
Hoffentlich kann dies jemand anderem Zeit sparen!
Bearbeiten: Kopieren der Lösung aus Keith Chapmans Blog für den Fall, dass der Link eines Tages unterbrochen wird:
Update (31.05.2017): Vielen Dank an @johnstosh für diesen Hinweis - das todsichere hat sich ein wenig weiterentwickelt, seit ich diese Antwort veröffentlicht habe. Hier ist ein Link zu ihrer Dokumentation und ein aktualisiertes Codebeispiel (arg line ist immer noch der wichtige Teil für diese Frage):
quelle
Es sollte der gleiche Befehl sein, außer SET anstelle von EXPORT
quelle
C:\my_project>MAVEN_OPTS=-Xmx512m 'MAVEN_OPTS' is not recognized as an internal or external command, operable program or batch file.
Auf dem Mac: Verwenden Sie anstelle von
JAVA_OPTS
undMAVEN_OPTS
_JAVA_OPTIONS. Das funktioniert!quelle
Nachdem ich ohne Glück versucht hatte, die Variable MAVEN_OPTS zu verwenden, stieß ich auf diese Site, die für mich funktionierte. Alles was ich tun musste war -Xms128m -Xmx1024m zu den Standard-VM-Optionen hinzuzufügen und es funktionierte.
Um diese in Eclipse zu ändern, gehen Sie zu Fenster -> Einstellungen -> Java -> Installierte JREs. Wählen Sie das aktivierte JRE / JDK aus und klicken Sie auf Bearbeiten.
quelle
Unter Windows:
Fügen Sie eine Umgebungsvariable hinzu (sowohl in System- als auch in Benutzervariablen habe ich ein seltsames Problem, dass die Variable von verschiedenen Stellen abgerufen wird, also füge ich sie in beiden hinzu).
Nennen Sie es MAVEN_OPTS.
Wert wird sein:
-Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled
Die Zahlen können unterschiedlich sein, machen Sie sie relativ zu Ihrer Memgröße.
Ich hatte dieses Problem und das hat es behoben, sonst nichts!
quelle
Es hat funktioniert - Um in Eclipse zu ändern, gehen Sie zu Fenster -> Einstellungen -> Java -> Installierte JREs. Wählen Sie das aktivierte JRE / JDK aus und klicken Sie auf Bearbeiten.
Standard-VM-Argumente = -Xms128m -Xmx1024m
quelle
Sie suchen nach 2 Optionen für
java
:Fügen Sie sie
java
wie folgt in Ihren Befehlszeilenaufruf der ausführbaren Datei ein:Beachten Sie, dass die Startgröße und die maximale Größe des Heapspeichers je nach Anwendung möglicherweise gleich sein sollen, da dadurch die Größe des Heapspeichers zur Laufzeit nicht geändert werden kann (was in Anwendungen, die reagieren müssen, einige Zeit in Anspruch nehmen kann). Das Ändern der Größe des Heaps kann dazu führen, dass viele Objekte verschoben und die Buchhaltung wiederholt werden.
Machen Sie sie für alltägliche Projekte so, wie Sie es für gut genug halten. Profil für Hilfe.
quelle