Antworten:
Das Flag Xmx
gibt den maximalen Speicherzuweisungspool für eine Java Virtual Machine (JVM) an, während Xms
das anfängliche Speicherzuweisungspool angegeben wird.
Dies bedeutet, dass Ihre JVM mit Xms
Speicherplatz gestartet wird und maximal Xmx
Speicherplatz beanspruchen kann. Wenn Sie beispielsweise eine JVM wie unten starten, wird sie mit 256 MB Arbeitsspeicher gestartet und der Prozess kann bis zu 2048 MB Arbeitsspeicher verwenden:
java -Xms256m -Xmx2048m
Das Speicherflag kann auch in verschiedenen Größen angegeben werden, z. B. Kilobyte, Megabyte usw.
-Xmx1024k
-Xmx512m
-Xmx8g
Das Xms
Flag hat keinen Standardwert und Xmx
normalerweise einen Standardwert von 256 MB. Diese Flags werden häufig verwendet, wenn Sie auf a stoßen java.lang.OutOfMemoryError
.
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. Aus der Oracle-Dokumentation :
Beachten Sie, dass die JVM mehr Speicher als nur den Heap verwendet. Beispielsweise werden Java-Methoden, Thread-Stapel und native Handles im vom Heap getrennten Speicher sowie interne JVM-Datenstrukturen zugewiesen.
OutOfMemoryError
Fehler auf.
-Xms256m
ist "256 MiB", nicht "256 MB", da es sich eher um binäre Potenzen als um Zehnerpotenzen handelt. Siehe en.wikipedia.org/wiki/Binary_prefix . Da außerdem nicht verwendbarer Speicherplatz für einen zusätzlichen Pool von Survivor-Speicherplatz Runtime.getRuntime().maxMemory()
reserviert ist , ist die tatsächlich verfügbare Speichermenge geringer als der Wert, der über -Xmx
Führen Sie den Befehl aus, java -X
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 Standard und können ohne vorherige Ankündigung geändert werden.
Ich hoffe, dies wird Ihnen helfen, zu verstehen Xms
, Xmx
sowie viele andere Dinge, die am wichtigsten sind. :) :)
Sie können es in Ihrer IDE angeben. Zum Beispiel für Eclipse in Run Configurations → VM-Argumente . Sie können eingeben -Xmx800m -Xms500m
als
Die Frage selbst wurde bereits oben angesprochen. Fügen Sie einfach einen Teil der Standardwerte hinzu.
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 Speichermenge ab.
-Xmx128m -Xms64m
es verwenden, kann es um275m
RES mem herum einen Spitzenwert erreichen , aber wenn Sie-Xmx128m -Xms128m
es verwenden, kann es um550m
RES mem herum einen Spitzenwert erreichen. Verwenden von Java 8 Das Beste ist, den GC zu betonen und zu sehen, was passiert ...