A Java Virtual Machine (JVM) 3 kritikus mellékterméket hoz létre, amelyek hasznosak a teljesítmény optimalizálásához és a termelési problémák hibaelhárításához. Ezek a műtermékek:

  1. Szemétgyűjtési (GC) napló
  2. Thread Dump
  3. Heap Dump

1. Szemétgyűjtési napló

a) Mi az a GC napló?

A GC Log a szemétszállítási eseményekkel kapcsolatos információkat tartalmaz. Jelzi, hogy hány GC esemény futott le, milyen típusú ez a parancs a GC eseményeknek ez a parancsa (pl. Young GC vagy Full GC), mennyi ideig szünetelteti az egyes GC események az alkalmazást, mennyi objektumot igényeltek vissza az egyes GC események.

b) Hogyan néz ki egy GC napló?

A szemétgyűjtési naplófájl mintája itt található.

c) Hol használják a GC naplókat?

A szemétgyűjtési naplók segítségével tanulmányozzák az alkalmazás GC és memória teljesítményét. Használja a GC szünetidő optimalizálására, az alkalmazás optimális memóriaméretének meghatározására, valamint a memóriával kapcsolatos problémák hibaelhárítására is.

d) Hogyan lehet GC-naplót generálni?

Szemétgyűjtési naplókat generálhat a következő JVM-argumentumok átadásával:

8-ig tartó Java verziókon:

9-től kezdődő Java verzión:

fájl elérési útja: az a hely, ahová a szemétgyűjtő naplófájl íródik.

e) Hogyan lehet megérteni a GC naplót?

A szemétgyűjtési napló formátuma attól függően változik, hogy ki az Ön JVM-szállítója (Oracle, HP, IBM, Azul, ..), Java verzió (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), szemét gyűjtőalgoritmus (soros, párhuzamos, CMS, G1, Shenandoah, Z GC) és átadott JVM argumentumokat. Így egyetlen szabványos formátum sem áll rendelkezésre. Azonban itt van egy oktatóvideó, amely megpróbálja megérteni a GC naplófájl formátumát.

f) Milyen eszközöket használnak a GC napló elemzéséhez?

Számos szemétgyűjtési naplóelemző eszköz létezik. A legnépszerűbbek közül néhány itt található: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Thread Dump

a) Mi az a szálkidobás?

A szálkiíratás az alkalmazásban egy adott időpontban futó összes szál pillanatképe. Tartalmazza az összes információt az alkalmazás egyes szálairól, például a szál állapotát, a szál azonosítóját, a natív azonosítót, a szál nevét, a verem nyomkövetését és a prioritást.

b) Hogyan néz ki a szálkidobás?

A szálkiíratási minta itt található.

c) Hol használják a szálledobót?

A szálkiíratásokat elsősorban az olyan gyártási problémák hibaelhárítására használják, mint a CPU-tüskék, az alkalmazás reakcióhiánya, a gyenge válaszidő, a lefagyott szálak és a magas memóriafogyasztás.

d) Hogyan készítsünk szálkiíratást?

A szálkiíratok a futó alkalmazásból 8 különböző lehetőséggel rögzíthetők. A szálkiírás legáltalánosabb módja a „jstack” eszköz használata. jstack eszközt a JDK_HOMEbin mappában szállítjuk. Íme a parancs, amelyet ki kell adnia a szálkiíratás rögzítéséhez:

pid: az alkalmazás folyamatazonosítója, amelynek szálkiíratását rögzíteni kell

fájl elérési útja: az a fájl elérési útja, ahová a szálkiíratást be kell írni.

e) Hogyan lehet megérteni a szálkidobást?

Íme egy videóbeszéd, amely jó részletes áttekintést nyújt a szálkidobások megértéséhez.

f) Milyen eszközöket használnak a szálkidobás elemzéséhez?

Íme a legszélesebb körben használt szálkiíratási elemző eszközök: fastThread, Samurai, IBM Thread & Monitor analizátor, Visual VM

3. Heap Dump

a) Mi az a halomlerakás?

A kupackép az alkalmazás memóriájának pillanatképe egy adott időpontban. Olyan információkat tartalmaz, mint például, hogy melyek a memóriában lévő objektumok, milyen értékeket hordoznak, mekkora a méretük, milyen egyéb objektumokra hivatkoznak.

b) Hogyan néz ki a halomlerakás?

A mintahalom dump itt található. (Megjegyzés: bináris formátumban lesz. Tehát valójában nem tudja elolvasni).

c) Hol használják a halomlerakást?

A kupackiíratásokat elsősorban a memóriával kapcsolatos OutOfMemoryError problémák hibaelhárítására használják.

d) Hogyan készítsünk halomleírást?

A kupackiírás rögzíthető a futó alkalmazásból 7 különböző lehetőséggel. A kupackiíratás legáltalánosabb módja a „jmap” eszköz használata. A jmap eszközt a JDK_HOMEbin mappában szállítjuk. Íme a parancs, amelyet ki kell adnia a rögzítéshez:

pid: a Java Process Id, amelynek halomkiíratását rögzíteni kell

fájl elérési útja: az a fájl elérési útja, ahová a kupackiírás be lesz írva.

e) Hogyan lehet megérteni a halomlerakást?

A kupacképfájlok bináris formátumúak, és általában nagy méretűek. Emellett a formátumukból erősen hiányzik a dokumentáció. Ezért ezek elemzéséhez és megértéséhez a kupackiíratást elemző eszközöket kell használni (amelyeket a következő kérdésben adunk meg).

f) Milyen eszközöket használnak a kupackirakás elemzésére?

Itt vannak a legszélesebb körben használt kupackiírat-elemző eszközök: Eclipse MAT, HeapHero, JVisualVM.
Reméljük, hogy ez a cikk lefedi a szemétgyűjtő naplók, a szállerakások és a halomlerakatok elemzésének összes módszerét. Ha ezt a cikket valóban hasznosnak találta, kérjük, ossza meg ezt az információt barátaival, rokonaival, családjával és másokkal. Találkozunk a következő bejegyzésekben signalfix.net!