Konfigurere stakkstørrelser i JVM

1. Oversikt

I denne raske opplæringen skal vi se hvordan du konfigurerer trådstabelstørrelsene i HotSpot JVM.

2. Standard stakkstørrelse

Hver JVM-tråd har en privat innfødt stabel for å lagre informasjon om samtalestakk, lokale variabler og delvise resultater. Derfor spiller stabelen en avgjørende rolle i metodeanropninger. Dette er en del av JVM-spesifikasjonen, og følgelig bruker hver JVM-implementering der ute stabler.

Imidlertid er andre implementeringsdetaljer, som stakkstørrelse, implementeringsspesifikke. Fra nå av vil vi fokusere på HotSpot JVM og vil bruke ordene JVM og HotSpot JVM om hverandre.

Uansett, JVM vil lage stabler samtidig som den oppretter eiertråden.

Hvis vi ikke spesifiserer en størrelse for stakkene, vil JVM opprette en med standardstørrelse. Vanligvis avhenger denne standardstørrelsen av operativsystemet og dataarkitekturen. Dette er for eksempel noen av standardstørrelsene fra Java 14:

  • Linux / x86 (64-bit): 1 MB
  • macOS (64-bit): 1 MB
  • Oracle Solaris (64-bit): 1 MB
  • På Windows bruker JVM den samlede stabelstørrelsen

I utgangspunktet kan vi forvente rundt 1 MB for hver bunke i de fleste moderne operativsystemer og arkitekturer.

3. Tilpasse stakkstørrelsen

For å endre stabelstørrelsen kan vi bruke -Xss innstillingflagg. For eksempel -Xss1048576 angir stabelstørrelsen lik 1 MB:

java -Xss1048576 // utelatt

Hvis vi ikke vil beregne størrelsen i byte, kan vi bruke noen praktiske snarveier til å spesifisere forskjellige enheter - bokstaven k eller K for å indikere KB, m eller M for å indikere MB, og g eller G for å indikere GB. La oss for eksempel se et par forskjellige måter å sette stakkstørrelsen til 1 MB:

-Xss1m -Xss1024k

Lik -Xss, vi kan også bruke -XX: ThreadStackSize innstillingsflagg for å konfigurere stabelstørrelsen. Syntaksen for -XX: ThreadStackSizeer imidlertid litt annerledes. Vi bør skille størrelse og flaggnavn med likhetstegn:

java -XX: ThreadStackSize = 1024 // utelatt

HotSpot JVM tillater oss ikke å bruke en størrelse som er mindre enn en minimumsverdi:

$ java -Xss1K -versjon Den angitte størrelsen på Java-trådstakken er for liten. Angi minst 144 000 feil: Kunne ikke opprette Java Virtual Machine. Feil: Det har skjedd et dødelig unntak. Programmet vil avslutte.

Det tillater oss heller ikke å bruke en størrelse som er mer enn maksverdien (vanligvis 1 GB):

$ java -Xss2g -versjon Ugyldig trådstabelstørrelse: -Xss2g Den angitte størrelsen overstiger den maksimale representable størrelsen. Feil: Kunne ikke opprette Java Virtual Machine. Feil: Det har skjedd et dødelig unntak. Programmet vil avslutte.

4. Konklusjon

I denne raske opplæringen så vi hvordan du konfigurerer trådstabelstørrelsene i HotSpot JVM.


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