it-swarm.com.de

Was sind die Parameter -Xms und -Xmx beim Starten von JVM?

Erläutern Sie die Verwendung der Parameter Xms und Xmx in JVMs. Was sind die Standardwerte für sie?

868
Pankaj

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

Dies bedeutet, dass Ihre JVM mit Xms Speicherkapazität gestartet wird und maximal Xmx Speicherkapazität verwendet werden kann. Wenn Sie beispielsweise eine JVM wie die folgende starten, wird sie mit 256 MB Arbeitsspeicher gestartet, und der Prozess kann bis zu 2048 MB Arbeitsspeicher belegen:

Java -Xms256m -Xmx2048m

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

-Xmx1024k
-Xmx512m
-Xmx8g

Das Flag Xms hat keinen Standardwert, und Xmx hat normalerweise einen Standardwert von 256 MB. Diese Flags werden häufig verwendet, wenn Sie auf einen Java.lang.OutOfMemoryError stoßen.

Beachten Sie bei der Verwendung dieser Einstellungen, 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. Von Oracle Dokumentation :

Beachten Sie, dass die JVM mehr Speicher als nur den Heap belegt. Beispielsweise werden Java Methoden, Thread-Stacks und native Handles im Speicher getrennt vom Heap sowie internen JVM-Datenstrukturen zugewiesen.

1202
hexacyanide

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 keine Standardoptionen und können ohne vorherige Ankündigung geändert werden.

Ich hoffe, dies wird Ihnen helfen, Xms, Xmx sowie viele andere Dinge zu verstehen, die am wichtigsten sind. :)

279
Rupesh Yadav

Sie können es in Ihrer IDE angeben. Zum Beispiel für Eclipse in Run ConfigurationsVM-Argumente. Sie können -Xmx800m -Xms500m als eingeben

Enter image description here

17

Die Frage selbst wurde bereits oben angesprochen. Hinzufügen eines Teils der Standardwerte.

Gemäß 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 im System verfügbaren Speicherkapazität ab.

12
Abhishek Aich