2017-09-09 1 views
0

Ich führe ein Java-Programm, das sehr große (fast 2 GB) Dateien lädt. Solange ich den maximalen Heap-Speicherplatz -mx3700m oder höher einstelle, läuft es in Eclipse einwandfrei. Eclipse wird mit javaw ausgeführt, und wenn ich die Speicherauslastung im Task-Manager beobachte, kann ich sehen, dass der Speicher des privaten Arbeitssatzes ungefähr 3,7 GB erreicht.Konsole läuft aus Java-Heap-Speicher, aber Eclipse nicht mit den gleichen Einstellungen

Das Problem tritt auf, wenn ich eine ausführbare JAR erstellen und versuchen, über die Befehlszeile auszuführen. Ich habe versucht, sowohl Java als auch JavaW, mit Max Heap-Speicher den ganzen Weg bis zu -mx7000m (mein Computer verfügt über 8 GB RAM). Aber ich habe immer keine Speicher mehr. Wenn ich im Task-Manager überwache, erreicht der Speicher eine Obergrenze von 2,08 GB und geht nie darüber hinaus.

Ich benutze die gleiche 64bit jre in beiden Fällen - 1.8.0_144.

Ich muss in der Lage sein, die JAR-Datei über die Befehlszeile auszuführen, aber ich bin mir nicht sicher, was ich falsch mache. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

+0

es '-Xmx3700m', feiner Unterschied zu dem, was Sie scheinen gesetzt zu haben. –

+0

Ich dachte, ich lese, dass Sie beide verwenden können. Ich habe es tatsächlich in beide Richtungen versucht, sowohl in Eclipse als auch in der Konsole. Gleiche Ergebnisse egal was – Michael

Antwort

0

Ich würde versuchen, es mit Xmx Argumente ausgeführt wird, z.B .:

java -jar -Xmx4096M file.jar 
+0

Ich versuchte beide -mx und -Xmx, von 3700m bis 7000m. Was auch immer, der im Task-Manager angezeigte Speicher ist immer bei 2,1Gb ausgelastet. – Michael

+0

@Michael betreiben Sie zufällig eine 32bit VM? –

+0

@ThomasJungblut Ich habe die 32-Bit-Version auf meinem Rechner deinstalliert, um sicherzugehen. Nein, es ist definitiv das 64bit, das ich betreibe – Michael

Verwandte Themen