Java Virtual Machine (JVM) generuje 3 kritické artefakty, ktoré sú užitočné na optimalizáciu výkonu a odstraňovanie produkčných problémov. Tie artefakty sú:

  1. Denník zberu odpadu (GC).
  2. Zásobník nití
  3. Skládka haldy

1. Denník zberu odpadu

a) Čo je denník GC?

GC Log obsahuje informácie súvisiace s udalosťami zberu odpadu. Bude indikovať, koľko udalostí GC prebehlo, aký typ tohto príkazu tento príkaz udalostí GC sú (tj Young GC alebo Full GC), ako dlho každá udalosť GC pozastaví aplikáciu, koľko objektov obnovila každá udalosť GC.

b) Ako vyzerá protokol GC?

Vzorový súbor denníka zberu odpadu nájdete tu.

c) Kde sa používajú záznamy GC?

Protokoly zberu odpadu sa používajú na štúdium výkonnosti GC a pamäte aplikácie. Používa sa na optimalizáciu časov prestávok GC, používa sa na identifikáciu optimálnej veľkosti pamäte pre vašu aplikáciu a tiež sa používa na riešenie problémov súvisiacich s pamäťou.

d) Ako vygenerovať GC denník?

Protokoly zberu odpadu môžete vygenerovať zadaním nasledujúcich argumentov JVM:

Vo verziách Java do 8:

Vo verzii Java od 9:

cesta k súboru: je miesto, kam sa zapíše súbor denníka zberu odpadu.

e) Ako rozumieť denníku GC?

Formát denníka zberu odpadu sa líši v závislosti od toho, kto je váš dodávateľ JVM (Oracle, HP, IBM, Azul, ..), verzia Java (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), odpadky zberný algoritmus (sériový, paralelný, CMS, G1, Shenandoah, Z GC) a argumenty JVM, ktoré odovzdáte. Nie je teda k dispozícii jeden štandardizovaný formát. Tu je však video tutoriál, ktorý sa vám pokúša pomôcť pochopiť formát súboru denníka GC.

f) Aké nástroje sa používajú na analýzu protokolu GC?

Existuje viacero nástrojov na analýzu denníka zberu odpadu. Niektoré z populárnych sú uvedené tu: GCeasy, vizualizér IBM GC & Memory, HP JMeter, Google Garbage Cat

2. Zásobník nití

a) Čo je to výsypka nití?

Výpis vlákna je snímka všetkých vlákien spustených v aplikácii v určitom časovom bode. Obsahuje všetky informácie o každom vlákne v aplikácii, ako je stav vlákna, ID vlákna, natívne ID, názov vlákna, sledovanie zásobníka a priorita.

b) Ako vyzerá výsypka nití?

Vzorový výpis vlákna nájdete tu.

c) Kde sa používa zásobník nití?

Výpisy vlákien sa primárne používajú na riešenie produkčných problémov, ako sú špičky procesora, nereagovanie aplikácie, zlá doba odozvy, nehybné vlákna, vysoká spotreba pamäte.

d) Ako vygenerovať výpis vlákna?

Výpisy vlákien možno zachytiť zo spustenej aplikácie pomocou 8 rôznych možností. Najbežnejšou možnosťou, ako vykonať výpis z vlákna, je použiť nástroj „jstack“. nástroj jstack sa dodáva v priečinku JDK_HOMEbin. Tu je príkaz, ktorý musíte zadať na zachytenie výpisu vlákna:

pid: je ID procesu aplikácie, ktorej výpis vlákna by sa mal zachytiť

cesta k súboru: je cesta k súboru, do ktorej sa zapíše výpis vlákna.

e) Ako chápať výsypku?

Tu je videohovor, ktorý poskytuje dobrý podrobný prehľad o tom, ako porozumieť výpisom z vlákien.

f) Aké nástroje sa používajú na analýzu odvalu závitu?

Tu sú najpoužívanejšie nástroje na analýzu výpisu vlákien: fastThread, Samurai, IBM Thread & Monitor Analyzátor, Visual VM

3. Skládka haldy

a) Čo je to skládka?

Výpis haldy je snímka pamäte vašej aplikácie v určitom časovom bode. Obsahuje informácie, ako sú napríklad objekty v pamäti, aké hodnoty nesú, aká je ich veľkosť, na aké iné objekty odkazujú.

b) Ako vyzerá skládka?

Vzor skládky haldy nájdete tu. (Poznámka: Bude v binárnom formáte. Takže ho vlastne nemôžete čítať).

c) Kde sa používa skládka?

Výpisy haldy sa primárne používajú na riešenie problémov súvisiacich s pamäťou, OutOfMemoryError.

d) Ako vygenerovať skládku haldy?

Výpis haldy je možné zachytiť zo spustenej aplikácie pomocou 7 rôznych možností. Najbežnejšou možnosťou na vytvorenie výpisu z haldy je použitie nástroja ‚jmap‘. Nástroj jmap sa dodáva v priečinku JDK_HOMEbin. Tu je príkaz, ktorý musíte zadať na zachytenie:

pid: je ID procesu Java, ktorého výpis haldy by sa mal zachytiť

cesta k súboru: je cesta k súboru, do ktorej sa zapíše výpis haldy.

e) Ako rozumieť skládke?

Súbory výpisu haldy sú v binárnom formáte a majú tendenciu byť veľké. Okrem toho ich formátu veľmi chýba dokumentácia. Preto na ich analýzu a pochopenie musíte použiť nástroje na analýzu výpisu haldy (uvedené v ďalšej otázke).

f) Aké nástroje sa používajú na analýzu skládky?

Tu sú najpoužívanejšie nástroje na analýzu výpisu haldy: Eclipse MAT, HeapHero, JVisualVM.
Dúfame, že tento článok obsahuje všetky metódy analýzy protokolov zberu odpadu, nití a hromady. Ak ste zistili, že tento článok je pre vás skutočne užitočný, zdieľajte tieto informácie so svojimi priateľmi, príbuznými, rodinou a ostatnými. Uvidíme sa v ďalších príspevkoch s signalfix.net!