Aflați dimensiunea Java Heap Dimensiune memorie
Există o problemă cu dimensiunea memoriei Java Heap, acesta trebuie să fie să indice în mod corespunzător tuturor lucrat în mod normal (de exemplu, server web Tomcat, Liferay, OpenMRS și așa mai departe) și în articolul „Learn Java Heap Dimensiune memorie Dimensiune“ Eu vă voi spune cum puteți găsi cele mai bune valoare pentru Java.
Acum, vă voi arăta cum să utilizați-XX: + PrintFlagsFinal-vă cu dimensiunea heap «dimensiunea heap». În Java, dimensiunea maximă implicită heap și sunt distribuite pe baza algoritmului - ergonomie (algoritmul ergonomie).
Așa cum bine calculat Heap dimensiuni?
Dimensiunea inițială heap - este raportul dintre 1/64 memorie fizică la 1 GB. (Dimensiunea heap inițială de 1/64 a memoriei fizice până la 1Gbyte)
Dimensiunea heap maximă - raportul 1/4 din memorie fizică la 1 GB. (Dimensiunea heap maximă de 1/4 din memorie fizică de până la 1Gbyte)
Cu toate acestea, algoritmul este mai mare, doar pentru referință, poate varia de la VM.
Prezentare generală a memoriei Java
O scurtă trecere în revistă a structurilor de memorie Java:
1. Java Heap Dimensiune
Un loc de a stoca obiectele create de o aplicație Java, este în cazul în care colectarea gunoiului nevoie de memorie pentru aplicații Java. Pentru „proces de grele Java», lipsa de dimensiunea memoriei va cauza o eroare populară: java.lang.OutOfMemoryError: Java spațiu grămadă.
-xms
-xmx
următoarele valori implicite alocate JVM:
Java dimensiunea memoriei
InitialHeapSize = 64781184 bytes (61.7 MB) și MaxHeapSize = 1,038,090,240 bytes (990Mb).
PermGen Dimensiune
PermSize = 21757952 bytes (20,75 MB), MaxPermSize = 174,063,616 bytes (166 MB)
Subiect stivă Dimensiune
ThreadStackSize = 1024 kb (1MB)
mărimea dedicată haldei (heap dimensiunea memoriei) este destul de aproape de rezultatele de ergonomie.
#ergonomics algoritm
Dimensiunea inițială heap = 4096M / 64 = 64 MBytes
Dimensiunea maximă a heap = 4096M / 4 = 1024 MB
Mediul de testare are următoarele caracteristici:
OS. Mac OSX 10.9
RAM. RAM de 8 GB
CPU. 4 x Potsessor
JDK. 1.7
Rulați comanda pentru a testa:
Aflați dimensiunea Dimensiune Java Heap Memorie în MacOS X
următoarele valori implicite alocate JVM:
Java dimensiunea memoriei
InitialHeapSize = 20655360 bytes (19.69M) și MaxHeapSize = 331,350,016 bytes (316 MB).
PermGen Dimensiune
PermSize = 21757952 bytes (20.75 Mb), MaxPermSize = 85,983,232 bytes (82 MB).
Java stivă Dimensiune
ThreadStackSize = 1024 KB (1 MB)
dimensiunea memoriei dedicate a heap (dimensiunea memoriei heap) nu au nici o semnificație în comparație cu următorul rezultat pe algoritmul de ergonomie.
#ergonomics algoritm
Dimensiunea inițială heap = 8192M / 64 = 128 MB
Dimensiunea maximă a heap = 8192M / 4 = 2048 MB
ferestre
Grep nu este pe Windows, în schimb, vom folosi Findstr.
Mediul de testare are următoarele caracteristici:
OS. Windows 8
RAM. 16 GB
CPU. 8 x procesor
JDK. 1.7
Aflați dimensiunea Java Heap Dimensiune memorie în Windows
Următoarele valori implicite pentru JVM pe sistemele de operare Windows identificate:
Java dimensiunea memoriei
InitialHeapSize = 266634176 bytes (256 MB) și MaxHeapSize = 4,266,146,816 bytes (4068 MB).
PermGen Dimensiune
PermSize = 21757952 bytes (20,75 MB), MaxPermSize = 85,983,232 bytes (823 MB).
Java stivă Dimensiune
ThreadStackSize = 0 kilobiți. (Ciudat ...)
Dedicat dimensiunea memoriei heap este aproape la fel ca algoritmul pentru ergonomie:
#ergonomics algoritm
Dimensiunea inițială heap = 16384/64 = 256 MB
Dimensiunea maximă a heap = 16384/4 = 4096 MB
Oferit de memorie Java
Mai jos, am dat recomandarea mea (parametrii) pentru aplicații de încărcare joasă și medie Java 🙂
Heap = -Xms512m -Xmx1024m
PermGen = -XX: PermSize = 64M -XX: MaxPermSize = 128m
Subiect = -Xss512k
P.S: Pentru cele mai multe proiecte Java, 512K de memorie pentru flux (fir) este mai mult decât suficient.
Ce este -XX: + PrintCommandLineFlags?
Acest -XX: + PrintCommandLineFlags utilizate pentru valorile de ieșire schimba numai VM (notată cu simbolul =).
În cele din urmă, valorile implicite pentru dimensiunea memoriei heap, bijuterie permanent și stiva este diferit de JVM, nu se așteaptă ca JVM va utiliza valoarea optimă pentru aplicațiile Java.
Pe aceasta, concluzionăm, „Learn Java Heap memorie dimensiunea Dimensiune.“ Sper că a fost informativ.