Java >> Java tutorial >  >> JVM

Konfiguration af stakstørrelser i JVM

1. Oversigt

I denne hurtige vejledning skal vi se, hvordan du konfigurerer trådstablenes størrelser i HotSpot JVM.

2. Standard stakstørrelse

Hver JVM-tråd har en privat indbygget stak til at gemme opkaldsstackoplysninger, lokale variabler og delvise resultater. Derfor spiller stakken en afgørende rolle i metodepåkaldelser. Dette er en del af JVM-specifikationen, og derfor bruger enhver JVM-implementering derude stakke.

Andre implementeringsdetaljer, såsom stakstørrelse, er dog implementeringsspecifikke. Fra nu af vil vi fokusere på HotSpot JVM og vil bruge udtrykkene JVM og HotSpot JVM i flæng.

Anyway,JVM'en vil oprette stakke, samtidig med at den opretter ejertråden.

Hvis vi ikke angiver en størrelse for stakkene, opretter JVM en med en standardstørrelse. Normalt afhænger denne standardstørrelse af operativsystemet og computerarkitekturen. For eksempel er disse nogle af standardstørrelserne fra Java 14:

  • Linux/x86 (64-bit):1 MB
  • macOS (64-bit):1 MB
  • Oracle Solaris (64-bit):1 MB
  • På Windows bruger JVM'en stackstørrelsen for hele systemet

Grundlæggende kan vi forvente omkring 1 MB for hver stak i de fleste moderne operativsystemer og arkitekturer.

3. Tilpasning af stakstørrelsen

For at ændre stakstørrelsen kan vi bruge -Xss  tuning flag. For eksempel -Xss1048576  indstiller stakstørrelsen til 1 MB:

java -Xss1048576 // omitted

Hvis vi ikke ønsker at beregne størrelsen i bytes, kan vi bruge nogle praktiske genveje til at angive forskellige enheder - bogstavet k eller K for at angive KB, m eller M for at angive MB og g eller G for at angive GB. Lad os for eksempel se et par forskellige måder at indstille stakstørrelsen til 1 MB:

-Xss1m 
-Xss1024k

Svarende til -Xss , vi kan også bruge -XX:ThreadStackSize  tuning flag for at konfigurere stakstørrelsen. Syntaksen for -XX:ThreadStackSize er dog lidt anderledes. Vi bør adskille størrelsen og flagnavnet med et lighedstegn:

java -XX:ThreadStackSize=1024 // omitted

HotSpot JVM tillader os ikke at bruge en størrelse mindre end en minimumsværdi:

$ java -Xss1K -version
The Java thread stack size specified is too small. Specify at least 144k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Det vil heller ikke tillade os at bruge en størrelse mere end den maksimale værdi (normalt 1 GB):

$ java -Xss2g -version
Invalid thread stack size: -Xss2g
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

4. Konklusion

I denne hurtige vejledning så vi, hvordan man konfigurerer trådstablenes størrelser i HotSpot JVM.


Java tag