Kaip nustatomas numatytasis „Java“ krūvos dydis?

Jei iš „Java“ komandų eilutės praleidžiu parinktį -Xmxn, naudojama numatytoji vertė. Pagal „ Java“ dokumentaciją „numatytoji vertė yra pasirinkta vykdymo metu, remiantis sistemos konfigūracija“.

Kokios sistemos konfigūracijos nuostatos veikia numatytuosius?

328
12 янв. Ričardas Dormanas surengė sausio 12 d 2011-01-12 13:06 '11, 13:06 pm. 2011-01-12 13:06
@ 8 atsakymai

„Windows“ sistemose galite naudoti šią komandą, kad sužinotumėte numatytasis sistemos, kurioje veikia jūsų programos, reikšmės.

java -XX: + PrintFlagsFinal -version | findstr heapsize

Ieškokite MaxHeapSize ( -Xmx ) ir „ InitialHeapSize .

Unix / Linux sistemoje galite tai padaryti

java -XX: + PrintFlagsFinal -version | grep heapsize

Manau, kad galutinis rezultatas yra baitais.

421
14 дек. Atsakymą pateikė akmenys333 gruodžio 14 d. 2012-12-14 04:52 '12 at 4:52 2012-12-14 04:52

Pagal šiukšlių surinkimo ergonomiką [Oracle] :

pradinis krūvos dydis:

Daugiau nei 1/64-oji fizinė įrenginio atmintis mašinoje arba priimtinas minimumas. Prieš J2SE 5.0 pradinis numatytojo krūvos dydis buvo pagrįstas minimumas, kuris priklauso nuo platformos. Pagal nutylėjimą galite pakeisti šią funkciją naudodami komandų eilutės -Xms parinktį.

maksimalus krūvos dydis:

Mažiau nei 1/4 fizinės atminties arba 1 GB. Iki J2SE 5.0 numatytasis maksimalus krūvos dydis yra 64 MB. Šią numatytąją vertę galite pakeisti, naudodami komandų eilutės parametrą -Xmx.

UPDATE:

border=0

Kaip komentavo Tomas Andersonas, pirmiau minėti reikalavimai taikomi serverių klasės mašinoms. „ Ergonomika“ „Java ™ 5.0 Virtual Machine“:

J2SE platformos versijoje 5.0 mašinų klasė, vadinama serverių klasės mašina, yra apibrėžiama kaip mašina su

  • 2 ar daugiau fizinių procesorių
  • 2 arba daugiau gigabaitų fizinės atminties

išskyrus 32 bitų platformas, kuriose veikia operacinės sistemos „Windows“ versija. Visoms kitoms platformoms numatytosios vertės yra tokios pačios kaip numatytosios versijos 1.4.2 reikšmės.

„J2SE“ platformos 1.4.2 versijoje pagal nutylėjimą buvo pasirinktos šios parinktys:

  • pradinis 4 MB dydžio krūvos dydis
  • maksimalus 64 MB dydžio krūvos dydis
100
12 янв. atsakymas duotas dogbane 12 sausis 2011-01-12 13:21 '11, 13:21 pm 2011-01-12 13:21

Tai modifikuojama naudojant „ Java 6“ naujinimą 18 .

Darant prielaidą, kad turime daugiau nei 1 GB fizinės atminties (gana dažnai šių dienų), tai visada yra 1/4 jūsų fizinės atminties.

27
30 окт. atsakymas duotas ernesto spalio 30 d 2012-10-30 09:42 '12 ne 9:42 2012-10-30 09:42

Ernesto yra teisus. Pagal nuorodą, kurią jis paskelbė [1]:

Atnaujinta kliento JVM krūvos konfigūracija

Kliento JVM sistemoje ...

  • Numatytasis maksimalus krūvos dydis yra pusė fizinės atminties iki 192 megabaitų fizinės atminties dydžio, o likusi dalis yra fizinės atminties ketvirčio, ​​fizinės atminties dydis yra 1 gigabaitas.

    Pavyzdžiui, jei jūsų kompiuteryje yra 128 megabaitų fizinės atminties, maksimalus krūvos dydis yra 64 megabaitai ir yra didesnis arba lygus 1 gigabaitui fizinės atminties, o tai reiškia, kad maksimalus krūvos dydis yra 256 megabaitai.

  • Didžiausias krūvos dydis JVM iš tikrųjų nenaudojamas, nebent jūsų programa sukuria pakankamai objektų, kad to reikalautų. Pradedant JVM, skiriama žymiai mažesnė suma, vadinama pradiniu krūvos dydžiu.

  • ...
  • JVM serverio konfigūracijos ergonomika dabar yra tokia pati, kaip ir kliento, išskyrus tai, kad numatytasis maksimalus 32 bitų JVM krūvos dydis yra 1 gigabaitas , o tai atitinka 4 gigabaitų fizinę atmintį ir 64 bitų JVM - 32 gigabaitų , kuri atitinka 128 gigabaitų fizinę atmintį.

[1] http://www.oracle.com/technetwork/java/javase/6u18-142093.html

15
09 нояб. atsakymas pateikiamas apl . 2012-11-09 18:22 „12, 12:22 PM 2012-11-09 18:22

„Java 8“ užima daugiau nei 1/6 jūsų „Xmssize“ („Minimum HeapSize“) ir mažiau nei 1/4 jūsų fizinės atminties jūsų „Xmxsize“ (maksimalaus dydžio) dydžio.

Pagal numatytuosius nustatymus galite patikrinti numatytąjį krūvos dydį:

Windows“ sistemoje :

 java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize" 

Linux :

 java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize' 

Kokios sistemos konfigūracijos nuostatos veikia numatytuosius?

Jūsų fizinė atmintis ir java versija.

11
12 апр. Sarat Chandra atsakymas, pateiktas balandžio 12 d 2017-04-12 14:47 '17, 2:47, 2017-04-14 14:47

Numatytoji vertė pasirenkama vykdymo metu, remiantis sistemos konfigūracija.

Peržiūrėkite dokumentacijos puslapį

Numatytasis krūvos dydis

Jei komandų eilutėje nėra nurodyti pradiniai ir didžiausi dydžiai, jie apskaičiuojami pagal kompiuterio atminties kiekį.

  • Numatytieji ir maksimalūs JVM kliento krūvio dydžiai pagal nutylėjimą:

    Numatytasis maksimalus krūvos dydis yra pusė fizinės atminties, kurios fizinė atmintis yra 192 megabaitų (MB), o likusi dalis yra fizinės atminties ketvirčio, ​​kad fizinė atmintis būtų 1 gigabaito (GB).

  • Pradinio ir maksimalaus numatytojo JVM serverio krūvos dydžiai yra šie:

    32 bitų JVM, numatytasis maksimalus krūvos dydis gali būti iki 1 GB, jei yra 4 GB ar daugiau fizinės atminties. 64 bitų JVM, numatytasis maksimalus krūvos dydis gali būti iki 32 GB, jei yra 128 GB ar daugiau fizinės atminties.

Kokios sistemos konfigūracijos nuostatos veikia numatytuosius?

Galite nurodyti pradinės ir maksimalios krūvos dydį, naudodami -Xms (pradinio krūvos dydžio) ir -Xmx (maksimalaus krūvio ) žymes . Jei žinote, kiek jūsų paraiškos krūvos turi veikti gerai, galite nustatyti -Xms ir -Xmx reikšmes.

7
13 окт. Ravindra babu atsakymas spalio 13 d 2016-10-13 19:05 '16 at 7:05 pm 2016-10-13 19:05

„IBM JVM“ komanda yra tokia:

 java -verbose:sizes -version 

Sužinokite daugiau apie „IBM SDK for Java 8“ - http://www-01.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.lnx.80.doc/diag/appendixes/defaults.html?>

03 сент. Atsakymas pateikiamas n0mer 03 Sep. 2015-09-03 12:39 '15 at 12:39 2015-09-03 12:39

Keletas parametrų veikia kartos dydį. Ši diagrama iliustruoja skirtumą tarp paskirstytos erdvės ir virtualios erdvės krūvoje. Pradedant virtualią mašiną, yra saugoma visa krūva. Rezervuotos vietos dydį galima nurodyti pasirinktimi -Xmx . Jei parametro -Xmx reikšmė -Xms mažesnė nei parametro -Xmx vertė, ne visa rezervuota erdvė iš karto priskiriama virtualiai mašinai. Šioje iliustracijoje neprivaloma erdvė vadinama „virtualia“. Įvairios krūvos dalys (nuolatinė karta, nuolatinė karta ir jaunoji karta) gali augti iki virtualios erdvės ribos.

2019

06 февр. atsakymą pateikė Theodor 06 Feb. 2019-02-06 13:56 '19, 13:56 pm 2019-02-06 13:56

Kiti klausimai apie „ žymes arba „ Užduoti klausimą“