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.