Quali sono i parametri Xms e Xmx all’avvio di JVM?

Si prega di spiegare l’uso dei parametri Xms e Xmx nelle JVM. Quali sono i valori predefiniti per loro?

Il flag Xmx specifica il massimo pool di allocazione di memoria per una Java virtual machine (JVM), mentre Xms specifica il pool di allocazione di memoria iniziale.

Ciò significa che la JVM verrà avviata con la quantità di memoria Xms e sarà in grado di utilizzare una quantità massima di memoria Xmx . Ad esempio, l’avvio di una JVM come di seguito lo avvierà con 256 MB di memoria e consentirà al processo di utilizzare fino a 2048 MB di memoria:

 java -Xms256m -Xmx2048m 

Il flag di memoria può anche essere specificato in più dimensioni, come kilobyte, megabyte e così via.

 -Xmx1024k -Xmx512m -Xmx8g 

Il flag Xms non ha valore predefinito e Xmx ha in genere un valore predefinito di 256 MB. Un uso comune di questi flag è quando si incontra un java.lang.OutOfMemoryError .

Quando si utilizzano queste impostazioni, tenere presente che queste impostazioni sono per l’ heap della JVM e che la JVM può / utilizzerà una quantità di memoria maggiore rispetto alle dimensioni assegnate all’heap. Dalla documentazione di Oracle :

Si noti che JVM utilizza più memoria del solo heap. Ad esempio, i metodi Java, gli stack di thread e gli handle nativi vengono allocati in memoria separatamente dall’heap e anche dalle strutture di dati interne JVM.

Esegui il comando java -X e otterrai un elenco di tutte le opzioni -X :

 C:\Users\Admin>java -X -Xmixed mixed mode execution (default) -Xint interpreted mode execution only -Xbootclasspath: set search path for bootstrap classs 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 

Le opzioni -X non sono standard e sono soggette a modifiche senza preavviso.

Spero che questo ti aiuterà a capire Xms, Xmx e molte altre cose che contano di più. 🙂

Puoi specificarlo nel tuo IDE. Ad esempio, per Eclipse in Esegui configurazioniargomenti VM . Inserisci -Xmx800m -Xms500m :

Inserisci qui la descrizione dell'immagine

La parte principale della domanda è già stata affrontata in precedenza. Aggiungendo solo una parte dei valori predefiniti.

Come per http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

Il valore predefinito di Xmx dipenderà dalla piattaforma e dalla quantità di memoria disponibile nel sistema.