10 fontos JVM opció a JAVA alkalmazásrendszer előállításához

Ismerje meg a JVM (Java virtuális gép) alapvető lehetőségeit a jobb teljesítmény és hibakeresés érdekében.


Ha Java fejlesztő vagy köztes szoftver adminisztrátor, akkor tudnia kell, hogy a JVM opciók mit jelent fontosságukkal együtt, és hogyan befolyásolják az alkalmazást. Nézzük meg őket.

A JVM opcióinak áttekintése

A JVM opciókról beszélve, akkor háromféle lehetőség létezik, amelyeket a JVM-hez is belefoglalhat, a szokásos, a nem szabványos és a speciális opciókat. Ha kipróbál egy speciális beállítást, akkor mindig használja a -XX opcióval. Hasonlóképpen, ha nem szabványos beállítást alkalmaz, akkor a -X értéket használja. A szokásos opciók nem egészítenek semmit az opcióval szemben.

Melyik JVM opciókat használja az alkalmazás?

Ha az alkalmazás Linuxon fut, akkor használhatja a ps -ef | grep java segítségével azonosíthatja a Java folyamatot, és megnézheti a folyamat argumentumként kinyomtatott JVM beállításokat. Ha egynél több Java folyamat folyik a rendszeren, akkor szükség lehet egy olyan kulcsszóra, amely kizárólag a Java alkalmazáshoz tartozik.

Ha az argumentum túl hosszú, akkor próbálkozzon a ps -auxww használatával, mivel ez a parancs hosszú argumentumlista is megjelenik.

Miután megkapta a JVM zászlók listáját, megismerheti bármilyen Java alkalmazás, például a Tomcat viselkedését..

Java halom mérete

 -XMS – állítsa be a Java kezdeti méretét
-xmx – állítsa be a Java maximális halom méretét
-XSS – állítsa be a java szálköteg méretét

-Xms – Ez a lehetőség a kezdő kupac méretének meghatározása a JVM számára, például Xms2048m, ami azt jelenti, hogy a JVM kezdeti kupac mérete 2 GB körül van. Tehát, amikor elindul egy JVM, a halom memória ilyen nagy lesz. Meglepően igen! Ez azért van, hogy megakadályozzák az átméretezést az indítás során, és javítsák a JVM indítási idejét.

-Xmx – Ez a lehetőség határozza meg a JVM maximális kupac méretét, például Xmx2048m, ami azt jelenti, hogy a JVM maximális kupac mérete csak 2 GB.

Alapvetően mindig-Xmsand-Xmx leszel együtt.

Állítsa be a halom százalékát

-XX: MaxHeapFreeRatio – beállítja a kukoricamennyiség maximális százalékát a GC után a zsugorodás elkerülése érdekében.

-XX: MinHeapFreeRatio – meghatározza a GC utáni kukoricamennyiség minimális százalékát a terjedés elkerülése érdekében; A kupachasználat ellenőrzéséhez használhatja a JCosole-t.

Az osztályos adatmegosztás engedélyezése

Adja meg az Xshareclasses lehetőséget az osztályadatok megosztásának engedélyezéséhez egy megosztott osztály-gyorsítótárban. A JVM csatlakozik egy meglévő gyorsítótárhoz, vagy létrehoz egy gyorsítótárat, ha az nem létezik. Több gyorsítótár is lehet, és a helyes gyorsítótárat megadhatja egy alopció hozzáadásával a -Xshareclasses opcióhoz..

PermGen méret

A JVM korábbi beállításai meghatározzák a halom memória méretét, de -XX: A PermSize a PermGen terület méretét határozza meg, ahol a karakterlánckészlet és az osztály metaadatait menti. Ez az opció különösen hatékony olyan webszerver esetén, mint a Tomcat, amely a telepítés során gyakran betölti a webalkalmazás osztályait.

Mellesleg, érdemes rájönni, hogy a PermGen helyet a Metaspace veszi át a Java 8-ban, és ez a lehetőség nem alkalmazható, ha JRE 8 JVM-mel fut..

Nyomtasson GC-t

-bőbeszédű: gc – naplózza a hulladékgyűjtőt és mennyi ideig tart.
-XX: + PrintGCDetails – tartalmazza a -verbose: gc adatait, de információkat ad az új generáció méretéről és a pontosabb időzítésekről is.
-XX: -PrintGCTimeStamps – Időbélyegek nyomtatása a szemétgyűjtésnél.

Ezeket a JVM opciókat a hulladékgyűjtés naplózásának lehetővé tételére használják, ami rendkívül hatékony a késés-érzékeny műveletnél. Régebben olyan rendszereken voltunk, ahol mikrosekundum-latenciákat keresünk, és ha felismeri, egy nagy hulladékgyűjtés több milliszekundumot is igénybe vehet..

Tehát a GC ingyenes architektúráját keressük, mint például az LMAX zavaróját, de ha valójában nem ultra latencia-érzékeny alkalmazásokra törekszik, ez a praktikus opció fontos GC statisztikákat nyújt. Megkérdezi, hogy nagy vagy kisebb hulladékgyűjtés, milyen szemétgyűjtőt alkalmaznak, milyen gyakran helyreállítja a memóriát, mennyi ideig tartott, stb..

Az „OutOfMemory” hiba kezelése

Ha a memóriából ki akarja dobni a halommennyiséget, akkor használja a -XX: + HeapDumpOnOutOfMemoryError

Ez a JVM opció veremlerakódást eredményez, amikor a JVM OutOfMemory hibával hal meg. Nincs szükség ráfordításra, kivéve ha ténylegesen történik OOM. Ez a jelölés szükséges a termelési rendszerek számára, mivel általában ez az egyetlen módja a probléma mély meghatározására.

A halomlerakót alapértelmezés szerint a JVM „aktuális könyvtárában” állítják be. Ha halomlerakókat szeretne létrehozni egy adott könyvtárban, akkor futtassa

-XX: HeapDumpPath = [elérési út-a-halom-dump-könyvtár]
-XX: + UseGCOverheadLimit
-XX: OnOutOfMemoryError ="< cmd args >;< cmd args >"

A halom dump fájl hatalmas méretű lehet, akár gigabájtig is, tehát biztosítsa, hogy a cél fájlrendszer megfelelő kapacitást biztosítson.

Ha azt szeretnénk, hogy azonnal újraindítsuk a kiszolgálót, miután a memóriából kifogytunk, akkor ugyanazt a célt állíthatjuk be –

XX: OnOutOfMemoryError ="shutdown -r"

Nyomkövetési osztály- és kirakodás

-XX: + TraceClassLoading és -XX: + TraceClassUnloading két JVM opció, amelyeket naplózási információk kinyomtatására használunk, amikor az osztályok betöltődnek a JVM-be vagy a JVM-ből történő kirakodáshoz. Ezek a JVM jelzők akkor hasznosak, ha bármilyen típusú memóriaszivárgás kapcsolódik az osztálytöltőhöz, és gyanítja, hogy az osztályok nem ürítik vagy gyűjtik a szemét.

Java osztályút

A JAVA Classpath-ről, majd az Xbootclasspath-ről meghatározzuk az osztályút-bejegyzéseket, amelyeket ellenőrzés nélkül szeretnénk betölteni. A JVM ellenőrzi az összes betöltött osztályt, hogy megbizonyosodjon arról, hogy nem próbál megcélozni egy objektumot egy int-vel, extra bejegyzéseket nem jelenít meg a veremből, vagy túl sokat nyomni és így tovább. 

Az osztály osztályba helyezése a bootclasspath-ra is átugorja a költségeket, de csak akkor szabad használni, ha tudja, hogy az osztályokat korábban már többször ellenőrizték. A JRuby-ban ez az egyszerű szkript felére és még felére csökkentette az indítási időt.

Profilírozó

A Java profilkészítés a különböző JVM szintű paraméterek, például a módszer végrehajtása, a szál végrehajtása, a szemétgyűjtés és az objektum létrehozása figyelési folyamatát jelenti. A Java Profiling finomabb képet nyújt a cél alkalmazás végrehajtásáról és annak erőforrás-felhasználásáról.

-Xprof
-Xrunhprof

64 bites környezet

Az operációs rendszer környezetében, ahol mind a 32, mind a 64 bites csomagok telepítve vannak, a JVM alapértelmezés szerint automatikusan kiválasztja a 32 bites környezeti csomagokat.

Ha a környezetet 64 bitesre szeretnénk manuálisan beállítani, akkor ezt a -d paraméter használatával tehetjük meg. És természetesen az OS bit lehet 32 ​​vagy 64.

Következtetés

Remélem, hogy ez segít a JVM paraméterek konfigurálásában az alkalmazás számára. Ha érdekli a java memória kezelésének alapos ismerete, akkor nézd meg ezt Udemy tanfolyam.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map