Veremméretek konfigurálása a JVM-ben

1. Áttekintés

Ebben a gyors bemutatóban megnézzük, hogyan konfigurálhatja a szálak veremét a HotSpot JVM-ben.

2. Alapértelmezett vereméret

Minden JVM-szálnak van egy saját natív vereme a hívásverem-információk, a helyi változók és a részeredmények tárolására. Ezért a verem döntő szerepet játszik a metódusok meghívásában. Ez a JVM specifikáció része, következésképpen minden ottani JVM implementáció halmokat használ.

A megvalósítás egyéb részletei, például a verem mérete azonban megvalósítás-specifikusak. Mostantól a HotSpot JVM-re fogunk összpontosítani, és a JVM és a HotSpot JVM kifejezéseket felváltva fogjuk használni.

Egyébként is, a JVM egyidejűleg halmokat hoz létre a tulajdonosi szál létrehozásával.

Ha nem adunk meg a halom méretét, a JVM létrehoz egy alapértelmezett méretet. Ez az alapértelmezett méret általában az operációs rendszertől és a számítógép architektúrájától függ. Például ezek a Java 14-hez képest az alapértelmezett méretek:

  • Linux / x86 (64 bites): 1 MB
  • macOS (64 bites): 1 MB
  • Oracle Solaris (64 bites): 1 MB
  • Windows rendszeren a JVM az egész rendszerre kiterjedő veremméretet használja

Alapvetően a legtöbb modern operációs rendszerben és architektúrában 1 MB-ra számíthatunk minden egyes veremért.

3. A verem méretének testreszabása

A verem méretének megváltoztatásához használhatjuk a -Xss hangolászászló. Például a -Xss1048576 1 MB méretre állítja a verem méretét:

java -Xss1048576 // kihagyva

Ha nem akarjuk a méretet bájtban számolni, használhatunk néhány praktikus parancsikont a különböző egységek megadására - a betű k vagy K a KB megjelölésére, m vagy M az MB megjelölésére, és g vagy G GB megjelölésére. Nézzünk meg például néhány különböző módszert a verem méretének 1 MB-ra történő beállításához:

-Xss1m -Xss1024k

Hasonló -Xss, használhatjuk a -XX: ThreadStackSize tuning flag a verem méretének konfigurálásához. A szintaxisa a -XX: ThreadStackSizeazonban egy kicsit más. A méretet és a zászló nevét egyenlőségjelekkel kell elválasztanunk:

java -XX: ThreadStackSize = 1024 // kihagyva

A HotSpot JVM nem engedi meg, hogy a minimálisnál kisebb méretet használjunk:

$ java -Xss1K -version A megadott Java szál verem mérete túl kicsi. Legalább 144 k hiba megadása: Nem sikerült létrehozni a Java virtuális gépet. Hiba: Végzetes kivétel történt. A program kilép.

Ezenkívül nem teszi lehetővé, hogy a maximális értéknél (általában 1 GB) nagyobb méretet használjunk:

$ java -Xss2g -version Érvénytelen szálköteg-méret: -Xss2g A megadott méret meghaladja a maximálisan reprezentálható méretet. Hiba: Nem sikerült létrehozni a Java virtuális gépet. Hiba: Végzetes kivétel történt. A program kilép.

4. Következtetés

Ebben a gyors oktatóanyagban láthattuk, hogyan konfigurálhatjuk a szálak veremét a HotSpot JVM-ben.


$config[zx-auto] not found$config[zx-overlay] not found