Bitte erklären Sie die Verwendung der Parameter "Xms" und "Xmx" in JVMs. Was sind die Standardwerte für diese Parameter?
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.
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:<directories and zip/jar files separated by ;>
set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
prepend in front of bootstrap class path
-Xdiag show additional diagnostic messages
-Xnoclassgc disable class garbage collection
-Xincgc enable incremental garbage collection
-Xloggc:<file> log GC status to a file with time stamps
-Xbatch disable background compilation
-Xms<size> set initial Java heap size.........................
-Xmx<size> set maximum Java heap size.........................
-Xss<size> 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 :)
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.