Konfiguriranje veličina stoga u JVM-u

1. Pregled

U ovom brzom vodiču vidjet ćemo kako konfigurirati veličine stoga niti u HotSpot JVM-u.

2. Zadana veličina steka

Svaka JVM nit ima privatni izvorni stog za pohranu podataka o stogu poziva, lokalnih varijabli i djelomičnih rezultata. Stoga stog igra presudnu ulogu u pozivima metode. Ovo je dio JVM specifikacije, i prema tome, svaka implementacija JVM-a koristi stekove.

Međutim, drugi detalji implementacije, poput veličine sloga, specifični su za implementaciju. Od sada ćemo se usredotočiti na HotSpot JVM i upotrebljavat ćemo pojmove JVM i HotSpot JVM naizmjenično.

U svakom slučaju, JVM će stvoriti hrpe istovremeno stvarajući nit posjedovanja.

Ako ne odredimo veličinu za hrpe, JVM će ih stvoriti sa zadanom veličinom. Obično ta zadana veličina ovisi o operativnom sustavu i arhitekturi računala. Na primjer, ovo su neke od zadanih veličina kao Java 14:

  • Linux / x86 (64-bitni): 1 MB
  • macOS (64-bit): 1 MB
  • Oracle Solaris (64-bit): 1 MB
  • U sustavu Windows JVM koristi veličinu stoga za cijeli sustav

U osnovi, možemo očekivati ​​oko 1 MB za svaki stog u većini modernih operativnih sustava i arhitektura.

3. Prilagođavanje veličine sloga

Da bismo promijenili veličinu stoga, možemo koristiti -Xss ugađanjezastava. Na primjer, -Xss1048576 postavlja veličinu hrpe jednaku 1 MB:

java -Xss1048576 // izostavljeno

Ako ne želimo izračunati veličinu u bajtovima, možemo koristiti neke korisne prečace za određivanje različitih jedinica - slova k ili K označiti KB, m ili M za označavanje MB i g ili G za označavanje GB. Na primjer, pogledajmo nekoliko različitih načina postavljanja veličine hrpe na 1 MB:

-Xss1m -Xss1024k

Slično -Xss, možemo koristiti i -XX: ThreadStackSize zastava za podešavanje za konfiguriranje veličine steka. Sintaksa za -XX: ThreadStackSizemeđutim, malo je drugačije. Veličinu i naziv zastave trebali bismo odvojiti znakom jednakosti:

java -XX: ThreadStackSize = 1024 // izostavljeno

HotSpot JVM ne dopušta nam upotrebu veličine manje od minimalne vrijednosti:

$ java -Xss1K -verzija Navedena veličina snopa Java niti premala je. Navedite najmanje 144k Pogreška: Nije moguće stvoriti Java virtualni stroj. Pogreška: Dogodila se kobna iznimka. Program će izaći.

Također, neće nam dopustiti upotrebu veličine veće od maksimalne vrijednosti (obično 1 GB):

$ java -Xss2g -verzija Nevažeća veličina stoga niti: -Xss2g Navedena veličina premašuje maksimalnu veličinu koja se može predstaviti. Pogreška: Nije moguće stvoriti Java virtualni stroj. Pogreška: Dogodila se kobna iznimka. Program će izaći.

4. Zaključak

U ovom smo brzom vodiču vidjeli kako konfigurirati veličine stoga niti u HotSpot JVM-u.