Was sind die Parameter -Xms und -Xmx beim Start der JVM?

Bitte erklären Sie die Verwendung der Parameter "Xms" und "Xmx" in JVMs. Was sind die Standardwerte für diese Parameter?

Lösung

Das Flag "Xmx" gibt den maximalen Speicherzuweisungspool für eine virtuelle Java-Maschine (JVM) an, während "Xms" den ursprünglichen Speicherzuweisungspool angibt.

Das bedeutet, dass Ihre JVM mit einer Speichermenge von Xms gestartet wird und maximal Xmx Speicher verwenden kann. Wenn Sie zum Beispiel eine JVM wie unten beschrieben starten, wird sie mit 256 MB Speicher gestartet und der Prozess kann bis zu 2048 MB Speicher verwenden:

java -Xms256m -Xmx2048m

Das Speicherkennzeichen kann auch in verschiedenen Größen angegeben werden, z. B. in Kilobyte, Megabyte usw.

-Xmx1024k
-Xmx512m
-Xmx8g

Das Xms-Flag hat keinen Standardwert, und Xmx hat normalerweise einen Standardwert von 256 MB. Eine häufige Verwendung für diese Flags ist, wenn ein java.lang.OutOfMemoryError auftritt.

Bei der Verwendung dieser Einstellungen ist zu beachten, dass diese Einstellungen für den Heap der JVM gelten und dass die JVM mehr Speicher als nur die dem Heap zugewiesene Größe verwenden kann/wird. Aus Oracle's Dokumentation:

Beachten Sie, dass die JVM mehr Speicher als nur den Heap verwendet. Zum Beispiel werden Java-Methoden, Thread-Stacks und native Handles in einem vom Heap getrennten Speicher zugewiesen, ebenso wie JVM-interne Datenstrukturen.

Kommentare (9)

Führen Sie den Befehl java -X aus und Sie erhalten eine Liste aller -X Optionen:

C:\Users\Admin>java -X
-Xmixed           mixed mode execution (default)
-Xint             interpreted mode execution only
-Xbootclasspath:
                      set search path for bootstrap classes and resources
-Xbootclasspath/a:
                      append to end of bootstrap class path
-Xbootclasspath/p:
                      prepend in front of bootstrap class path
-Xdiag            show additional diagnostic messages
-Xnoclassgc       disable class garbage collection
-Xincgc           enable incremental garbage collection
-Xloggc:    log GC status to a file with time stamps
-Xbatch           disable background compilation
-Xms        set initial Java heap size.........................
-Xmx        set maximum Java heap size.........................
-Xss        set java thread stack size
-Xprof            output cpu profiling data
-Xfuture          enable strictest checks, anticipating future default
-Xrs              reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni       perform additional checks for JNI functions
-Xshare:off       do not attempt to use shared class data
-Xshare:auto      use shared class data if possible (default)
-Xshare:on        require using shared class data, otherwise fail.
-XshowSettings    show all settings and continue
-XshowSettings:all         show all settings and continue
-XshowSettings:vm          show all vm related settings and continue
-XshowSettings:properties  show all property settings and continue
-XshowSettings:locale      show all locale related settings and continue

Die -X Optionen sind nicht standardisiert und können ohne Vorankündigung geändert werden.

Ich hoffe, dies wird Ihnen helfen, Xms, Xmx sowie viele andere wichtige Dinge zu verstehen :)

Kommentare (0)

Die Frage selbst wurde bereits oben beantwortet. Ich füge nur einen Teil der Standardwerte hinzu.

Wie unter http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

Der Standardwert von Xmx hängt von der Plattform und der Menge des im System verfügbaren Speichers ab.

Kommentare (1)