Bitte erläutern Sie die Verwendung Xms
und Xmx
Parameter in JVMs. Was sind die Standardwerte für sie?
java
memory-management
parameters
jvm
Pankaj
quelle
quelle
-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 ...Antworten:
Das Flag
Xmx
gibt den maximalen Speicherzuweisungspool für eine Java Virtual Machine (JVM) an, währendXms
das anfängliche Speicherzuweisungspool angegeben wird.Dies bedeutet, dass Ihre JVM mit
Xms
Speicherplatz gestartet wird und maximalXmx
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:Das Speicherflag kann auch in verschiedenen Größen angegeben werden, z. B. Kilobyte, Megabyte usw.
Das
Xms
Flag hat keinen Standardwert undXmx
normalerweise einen Standardwert von 256 MB. Diese Flags werden häufig verwendet, wenn Sie auf a stoßenjava.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 :
quelle
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-SpeicherplatzRuntime.getRuntime().maxMemory()
reserviert ist , ist die tatsächlich verfügbare Speichermenge geringer als der Wert, der über -XmxFühren Sie den Befehl aus,
java -X
und Sie erhalten eine Liste aller-X
Optionen: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. :) :)quelle
Sie können es in Ihrer IDE angeben. Zum Beispiel für Eclipse in Run Configurations → VM-Argumente . Sie können eingeben
-Xmx800m -Xms500m
alsquelle
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.
quelle
-Xms anfängliche Heap-Größe für den Start Während des Arbeitsprozesses kann die Heap-Größe jedoch aufgrund von Inaktivität oder GC-Iterationen der Benutzer kleiner als -Xms sein . Dies ist keine minimal erforderliche Heap-Größe.
-Xmx maximale Heap-Größe
quelle