10 Dôležité možnosti JVM pre produkčný aplikačný systém JAVA

Spoznajte základné možnosti JVM (Java Virtual Machine) pre lepší výkon a ladenie.


Ak ste vývojárom Java alebo správcom middleware, mali by ste vedieť, čo znamenajú možnosti JVM spolu s ich dôležitosťou a ako ovplyvňujú vašu aplikáciu. Zistime ich.

Prehľad možností JVM

Keď už hovoríme o možnostiach JVM, existujú tri typy možností, ktoré môžete zahrnúť do svojho JVM, štandardné, neštandardné a rozšírené možnosti. Ak vyskúšate rozšírenú možnosť, vždy použite voľbu s -XX. Podobne, ak používate neštandardnú možnosť, použijete -X. Štandardné možnosti túto možnosť neprirodzujú.

Ktoré možnosti JVM používa vaša aplikácia?

Ak je aplikácia spustená v systéme Linux, môžete použiť ps -ef | grep java identifikovať proces Java a pozrieť sa na možnosti JVM vytlačené ako argumenty procesu. Ak v systéme prebieha viac ako jeden proces Java, možno budete musieť ísť s kľúčovým slovom, ktoré je jedinečné pre vašu aplikáciu Java.

Ak je váš argument príliš dlhý, skúste použiť príkaz ps -auxww, pretože tento príkaz tiež zobrazí dlhý zoznam argumentov.

Po získaní zoznamu príznakov JVM môžete získať predstavu o správaní akejkoľvek Java aplikácie, napr. Tomcat.

Veľkosť haldy Java

 -XMS – nastaviť počiatočnú veľkosť haldy Java
-XMX – nastaviť maximálnu veľkosť haldy Java
-XSS – nastaviť veľkosť zväzku vlákien javy

-Xms – Táto voľba je definovať počiatočnú veľkosť haldy pre JVM, napr. Xms2048m, čo znamená, že počiatočná veľkosť haldy JVM je okolo 2 GB. Keď teda začne JVM, pamäť haldy bude taká veľká. Prekvapivo áno! Toto slúži na zabránenie zmeny veľkosti počas uvedenia do prevádzky a na predĺženie času spustenia JVM.

-Xmx – Táto možnosť je definovať maximálnu veľkosť haldy JVM, napr. Xmx2048m, čo znamená, že maximálna veľkosť haldy JVM bude iba 2 GB.

V zásade budete mať vždy spolu-Xmsand-Xmx.

Nastavte percento haldy

-XX: MaxHeapFreeRatio – nastavuje maximálny percentuálny podiel haldy po GC, aby sa predišlo zmenšeniu.

-XX: MinHeapFreeRatio – nastavuje minimálny percentuálny podiel haldy po GC, aby sa predišlo rozšíreniu; na sledovanie využívania haldy môžete použiť JCosole.

Povoliť zdieľanie údajov triedy

Ak chcete povoliť zdieľanie údajov triedy v zdieľanej triede cache, zadajte voľbu Xshareclasses. JVM sa pripája k existujúcej vyrovnávacej pamäti alebo vytvára vyrovnávaciu pamäť, ak takáto neexistuje. Môžete mať viac vyrovnávacích pamätí a správnu vyrovnávaciu pamäť môžete určiť pridaním suboption do voľby -Xshareclasses.

PermGen Size

Skoršie voľby JVM definujú veľkosť pamäte haldy, ale -XX: PermSize je definovanie veľkosti PermGen priestoru, kde sa ukladajú reťazce a metadáta triedy. Táto voľba je zvlášť účinná pre webový server, ako je Tomcat, ktorý počas zavádzania často načíta triedy webovej aplikácie.

Mimochodom, stojí za to si uvedomiť, že priestor PermGen je prevzatý Metaspace v Java 8 a táto možnosť nie je použiteľná, ak používate JRE 8 JVM.

Tlač GC

-verbose GC – protokoly spustenia zberača odpadu a ako dlho to trvá.
-XX: + PrintGCDetails – zahŕňa údaje z -verbose: gc, ale tiež pridáva informácie o veľkosti novej generácie a presnejších časovaniach.
-XX: -PrintGCTimeStamps – Tlač časových pečiatok pri zbere odpadu.

Tieto voľby JVM sa používajú na povolenie protokolovania zberu odpadu, čo je vysoko efektívne pre operácie citlivé na latenciu. Boli sme na systémoch, kde hľadáme mikrosekundy, a ak zistíte, veľká zbierka odpadu môže trvať niekoľko milisekúnd..

Preto sa snažíme o architektúru bez GC, ako je disruptor LMAX, ale ak nechcete používať aplikáciu citlivú na ultratenké oneskorenie, táto užitočná možnosť vám poradí dôležité štatistiky GC. Dostane sa vám to, či je to veľká alebo menšia zbierka odpadu, aký druh zberača odpadu sa používa, ako často sa obnovuje pamäť a koľko času sa v ňom nachádza atď..

Chyba spracovania chyby „OutOfMemory“

Na spustenie výpisu haldy z pamäte môžete použiť -XX: + HeapDumpOnOutOfMemoryError

Táto voľba JVM vytvorí výpis zásobníka, keď vaše JVM zomrie s chybou OutOfMemory. Výdavky nie sú zahrnuté, pokiaľ sa OOM skutočne nestane. Tento príznak je nevyhnutný pre výrobné systémy, pretože je to zvyčajne jediný spôsob, ako problém hlboko určiť.

Hromadná skládka bude štandardne nastavená v „aktuálnom adresári“ JVM. Ak si želáte vytvoriť skládky haldy v konkrétnom adresári, spustite

-XX: HeapDumpPath = [adresár výpisu cesty k halde]
-XX: + UseGCOverheadLimit
-XX: OnOutOfMemoryError ="< cmd args >;< cmd args >"

Súbor s výpisom haldy môže byť obrovský, až do gigabajtov, takže sa ubezpečte, že cieľový súborový systém umožňuje dostatočnú kapacitu..

Ak chceme reštartovať server okamžite po tom, čo sa objaví nedostatok pamäte, môžeme tento parameter nastaviť na rovnaký účel –

XX: OnOutOfMemoryError ="vypnutie -r"

Sledovanie vykladania a vykladania tried

-XX: + TraceClassLoading a -XX: + TraceClassUnloading sú dve možnosti JVM, ktoré používame na tlač protokolovacích informácií vždy, keď sa triedy načítajú do JVM alebo uvoľnia z JVM. Tieto príznaky JVM sú užitočné, ak máte akýkoľvek typ úniku pamäte spojený s classloaderom a máte podozrenie, že triedy nie sú vykladané alebo zbierané odpadky..

Cesta triedy Java

Keď už hovoríme o JAVA Classpath then-Xbootclasspath, špecifikuje položky, ktoré chceme načítať bez overenia. JVM overí všetky načítané triedy, aby sa ubezpečil, že sa nepokúsi dereferenciu objektu int, pop extra vstupov zo zásobníka alebo príliš veľa tlačenia atď.. 

Uvedenie triedy na bootclasspath preskočí tiež náklady, ale malo by sa použiť iba vtedy, keď viete, že triedy boli predtým mnohokrát overené. V JRuby to znížilo čas spustenia o polovicu a viac pre jednoduchý skript.

profilovanie

Profilovanie Java je proces sledovania rôznych parametrov úrovne JVM, ako sú spúšťanie metód, vykonávanie vlákien, kolekcie odpadkov a vytváranie objektov. Profilovanie v jazyku Java vám poskytuje presnejší pohľad na vykonanie vašej cieľovej aplikácie a jej využitie zdrojov.

-Xprof
-Xrunhprof

64-bitové prostredie

V prostredí OS, kde sú nainštalované 32 aj 64-bitové balíčky, JVM automaticky vyberie 32-bitové environmentálne balíčky ako predvolené.

Ak chceme prostredie nastaviť na 64 bitov ručne, môžeme to urobiť pomocou parametra -d. A samozrejme, bit OS môže byť buď 32 alebo 64.

záver

Dúfam, že vám to pomôže nakonfigurovať parametre JVM pre vašu aplikáciu. Ak máte záujem dozvedieť sa podrobnejšie informácie o správe pamäte java, pozrite si toto Kurz Udemy.

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