Mitä ovat -Xms- ja -Xmx-parametrit JVM:ää käynnistettäessä?

Selitä Xms- ja Xmx-parametrien käyttö JVM:ssä. Mitkä ovat niiden oletusarvot?

Ratkaisu

Lipuke Xmx määrittää Java-virtuaalikoneen (JVM) maksimimuistivarannon, kun taas Xms määrittää alkuperäisen muistivarannon.

Tämä tarkoittaa, että JVM käynnistetään Xms-muistimäärällä ja se voi käyttää enintään Xmx-muistimäärää. Jos esimerkiksi käynnistät JVM:n seuraavasti, se käynnistyy 256 MB muistilla ja prosessi voi käyttää enintään 2048 MB muistia:

java -Xms256m -Xmx2048m

Muistilippu voidaan määrittää myös eri kokoisina, kuten kilotavuina, megatavuina ja niin edelleen.

-Xmx1024k
-Xmx512m
-Xmx8g

Xms-lipulla ei ole oletusarvoa, ja Xmx:n oletusarvo on yleensä 256 MB. Näiden lippujen yleinen käyttötarkoitus on, kun kohtaat java.lang.OutOfMemoryError-virheen.

Kun käytät näitä asetuksia, pidä mielessä, että nämä asetukset koskevat JVM:n kasaa ja että JVM voi käyttää/käyttää enemmän muistia kuin vain kasaan varattua muistia. Oraclen dokumentaatiosta:

Huomaa, että JVM käyttää enemmän muistia kuin pelkkä kasa. Esimerkiksi Java-metodit, säiepinot ja natiivikäsitteet varataan muistiin erillään kasasta, samoin kuin JVM:n sisäiset tietorakenteet.

Kommentit (9)

Suorita komento java -X, niin saat luettelon kaikista -X-vaihtoehdoista:

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

Ohjeet -X eivät ole vakiomuotoisia ja voivat muuttua ilman ennakkoilmoitusta.

Toivottavasti tämä auttaa sinua ymmärtämään Xms, Xmx sekä monia muita tärkeitä asioita :)

Kommentit (0)

Itse kysymystä on jo käsitelty edellä. Lisään vain osan oletusarvoista.

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

Xmx:n oletusarvo riippuu alustasta ja järjestelmässä käytettävissä olevan muistin määrästä.

Kommentit (1)