Ich habe versucht, die Antwort darauf zu finden, aber ich konnte es immer noch nicht.
Ich habe eine 64-Bit-Maschine mit 256 GB RAM.
Ich versuche ein Java-Programm auszuführen, das auf MySQL verweist. Und es benötigt eine ruhige, große Heap-Größe, denn wenn ich das VM-Argument -Xmx1024m
nach ein paar Minuten benutze, erscheint dies:
Aber als ich versuchte, das Programm-VM-Argument nach -Xmx2048m
oder größer zu setzen, funktionierte es nicht und sagte:
Ich habe gelesen, dass die Einstellung -Xmx2048
kein Problem für 64-Bit-Rechner ist, aber ich weiß wirklich nicht, warum es auf meinem Rechner nicht funktioniert.
java -version
ausgabe:
wmic OS erhält FreePhysicalMemory / Value Ausgabe:
%Vor%wmic computersystem holt TotalPhysicalMemory aus:
%Vor%wmic os erhalten osarchitecture Ausgabe
%Vor% Ich konnte systeminfo|find "Memory"
nicht ausführen, da die Syntax falsch ist. Ich bin mir auch nicht sicher warum.
Diese Nachricht impliziert, dass der Java-Heap nicht genug Platz für weitere Zuweisung hat. Es scheint, dass Sie auf 1G Xmx eingestellt haben, was für Ihre Anwendung nicht ausreicht Andernfalls könnte die Anwendung Speicher verlieren, der Speicherplatz in Java-Heap belegt.
%Vor%Während der VM-Initialisierung. JVM bietet verschiedene Init-Funktionen von Heap bis zu JIT-Modulen. Der Java-Heap ist während der Initialisie- rung ständig verfügbar, wenn JVM die Datei nicht finden konnte Contigous Speicherplatz für die angeforderte XMX dann oben Fehlermeldung wird ausgelöst.
Dies sind virtuelle Speicherzuweisungen, bitte verwechseln Sie diese nicht mit den physikalischen Speicherwerten
Bitte führen Sie den Befehl aus java-verbose: init -Xmx2048 -version
Dieser Befehl zeigt die Schritte an, die JVM während der Initialisierung durchlaufen hat und in welchem Schritt er fehlgeschlagen ist.
Ziehen Sie in Erwägung, Ihre App als Administrator auszuführen - starten Sie einfach die PowerShell-Konsole mit der rechten Maustaste - & gt; Führen Sie als Administrator aus.
Windows kann die Gewährung von viel Speicher für einen einzelnen Prozess verweigern, der nicht erhöht ausgeführt wird.
Auch - verwenden Sie Windows Server oder eine Arbeitsstationsversion von Windows? Es wird generell empfohlen, Windows Server für solche "großen" Dienste zu verwenden.
Tags und Links java memory heap-memory