Java Virtual Machine (JVM) generuje 3 kritické artefakty, které jsou užitečné pro optimalizaci výkonu a odstraňování produkčních problémů. Tyto artefakty jsou:

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

1. Protokol sběru odpadu

a) Co je protokol GC?

GC Log obsahuje informace související s událostmi sběru odpadu. Bude indikovat, kolik GC událostí běželo, jaký typ tohoto příkazu tento příkaz GC událostí jsou (tj. Young GC nebo Full GC), jak dlouho každá GC událost pozastavila aplikaci, kolik objektů každá GC událost získala zpět.

b) Jak vypadá protokol GC?

Ukázkový soubor protokolu garbage collection lze nalézt zde.

c) Kde se používají protokoly GC?

Protokoly garbage collection se používají ke studiu GC a výkonu paměti aplikace. Používá se k optimalizaci doby pauzy GC, používá se k identifikaci optimální velikosti paměti pro vaši aplikaci a také se používá k odstraňování problémů souvisejících s pamětí.

d) Jak vygenerovat GC Log?

Protokoly shromažďování odpadků můžete generovat předáním následujících argumentů JVM:

Ve verzích Java do 8:

Na verzi Java od 9:

cesta k souboru: je umístění, kam bude zapsán soubor protokolu Garbage Collection.

e) Jak rozumět protokolu GC?

Formát protokolu shromažďování odpadků se liší v závislosti na tom, kdo je váš prodejce JVM (Oracle, HP, IBM, Azul, ..), verze Java (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), odpadky sběrný algoritmus (Serial, Parallel, CMS, G1, Shenandoah, Z GC) a argumenty JVM, které předáte. Není tedy k dispozici jeden standardizovaný formát. Zde je však video tutoriál, který se vám pokouší pomoci pochopit formát souboru protokolu GC.

f) Jaké nástroje se používají k analýze protokolu GC?

Existuje několik nástrojů pro analýzu protokolu sběru odpadu. Některé z populárních jsou uvedeny zde: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Výsyp nití

a) Co je to výsyp nití?

Výpis vlákna je snímek všech vláken spuštěných v aplikaci v určitém okamžiku. Obsahuje všechny informace o každém vláknu v aplikaci, jako je stav vlákna, ID vlákna, nativní ID, název vlákna, trasování zásobníku a priorita.

b) Jak vypadá skládka nití?

Ukázkový výpis vlákna lze nalézt zde.

c) Kde se používá zásobník nití?

Výpisy vláken se primárně používají k odstraňování problémů s produkčními problémy, jako jsou špičky procesoru, nereagování aplikace, špatná doba odezvy, zavěšená vlákna, vysoká spotřeba paměti.

d) Jak vygenerovat výpis vlákna?

Výpisy vláken lze zachytit ze spuštěné aplikace pomocí 8 různých možností. Nejběžnější možností, jak provést výpis vlákna, je použít nástroj ‚jstack‘. nástroj jstack je dodáván ve složce JDK_HOMEbin. Zde je příkaz, který musíte zadat, abyste zachytili výpis vlákna:

pid: je ID procesu aplikace, jejíž výpis vlákna by měl být zachycen

cesta k souboru: je cesta k souboru, kam bude zapsán výpis vlákna.

e) Jak porozumět výpisu nití?

Zde je videohovor, který poskytuje dobrý podrobný přehled o tom, jak porozumět výpisům vláken.

f) Jaké nástroje se používají k analýze výsypu nití?

Zde jsou nejpoužívanější nástroje pro analýzu výpisu stavu vláken: fastThread, Samurai, IBM Thread & Monitor analyzer, Visual VM

3. Skládka haldy

a) Co je halda skládka?

Výpis haldy je snímek paměti vaší aplikace v určitém časovém okamžiku. Obsahuje informace jako např. co jsou objekty v paměti, jaké hodnoty nesou, jaká je jejich velikost, na jaké další objekty odkazují.

b) Jak vypadá skládka?

Vzorový výpis haldy naleznete zde. (Poznámka: Bude v binárním formátu. Takže to vlastně nemůžete číst).

c) Kde se používá skládka?

Výpisy haldy se primárně používají k odstraňování problémů souvisejících s pamětí, OutOfMemoryError.

d) Jak vygenerovat výpis haldy?

Výpis haldy lze zachytit ze spuštěné aplikace pomocí 7 různých možností. Nejběžnější možností, jak provést výpis haldy, je použití nástroje ‚jmap‘. Nástroj jmap je dodáván ve složce JDK_HOMEbin. Zde je příkaz, který musíte zadat k zachycení:

pid: je ID procesu Java, jehož výpis haldy by měl být zachycen

cesta k souboru: je cesta k souboru, kam bude zapsán výpis haldy.

e) Jak rozumět haldovému smetišti?

Soubory výpisu haldy jsou v binárním formátu a mají tendenci být velké. Kromě toho jejich formátu silně chybí dokumentace. Proto musíte použít nástroje pro analýzu výpisu haldy (uvedené v další otázce), abyste je analyzovali a porozuměli jim.

f) Jaké nástroje se používají k analýze haldy?

Zde jsou nejpoužívanější nástroje pro analýzu výpisu haldy: Eclipse MAT, HeapHero, JVisualVM.
Doufáme, že tento článek pokrývá všechny metody pro analýzu protokolů shromažďování odpadků, výpisů vláken a výpisů haldy. Pokud vám tento článek opravdu pomohl, sdílejte prosím tyto informace se svými přáteli, příbuznými, rodinou a ostatními. Uvidíme se v dalších příspěvcích s signalfix.net!