Java Virtual Machine (JVM) genererar 3 kritiska artefakter som är användbara för att optimera prestanda och felsöka produktionsproblem. Dessa artefakter är:

  1. Logg för sophämtning (GC).
  2. Tråddump
  3. Högdump

1. Logg för sophämtning

a) Vad är en GC-logg?

GC-loggen innehåller information om sopsamlingshändelser. Det kommer att indikera hur många GC-händelser som kördes, vilken typ av kommandot detta kommando av GC-händelser de är (dvs. Young GC eller Full GC), hur länge varje GC-händelse pausar applikationen, hur många objekt återtog varje GC-händelse.

b) Hur ser en GC-logg ut?

Exempel på loggfil för sophämtning finns här.

c) Var används GC-loggar?

Sophämtningsloggar används för att studera applikationens GC och minnesprestanda. Den används för att optimera GC-paustiderna, den används för att identifiera optimal minnesstorlek för din applikation, den används också för att felsöka minnesrelaterade problem.

d) Hur genererar man en GC-logg?

Du kan generera sophämtningsloggar genom att skicka följande JVM-argument:

På Java-versioner fram till 8:

På Java-version från 9:

fil-sökväg: är platsen där loggfilen för Garbage Collection kommer att skrivas.

e) Hur förstår man en GC-logg?

Sophämtningsloggformatet varierar beroende på vem som är din JVM-leverantör (Oracle, HP, IBM, Azul, ..), Java-version (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), skräp insamlingsalgoritm (Serial, Parallel, CMS, G1, Shenandoah, Z GC) och JVM-argument du passerar. Det finns alltså inte ett standardiserat format tillgängligt. Men här är en videohandledning, som försöker hjälpa dig att förstå GC-loggfilformatet.

f) Vilka verktyg används för att analysera en GC-logg?

Det finns flera verktyg för analys av sophämtningsloggar. Några av de populära ges här: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Tråddump

a) Vad är en tråddump?

En tråddump är en ögonblicksbild av alla trådar som körs i programmet vid en tidpunkt. Den innehåller all information om varje tråd i applikationen såsom trådtillstånd, tråd-ID, ursprungligt ID, trådnamn, stackspårning och prioritet.

b) Hur ser en tråddumpning ut?

Ett exempel på tråddump finns här.

c) Var används en tråddump?

Tråddumpar används i första hand för att felsöka produktionsproblem som CPU-spikar, bristande respons i applikationen, dålig svarstid, hängande trådar, hög minnesförbrukning.

d) Hur genererar man en tråddump?

Tråddumpar kan fångas från det program som körs med 8 olika alternativ. Det vanligaste alternativet för att ta tråddumpning är att använda ’jstack’-verktyget. jstack-verktyget levereras i mappen JDK_HOMEbin. Här är kommandot som du behöver utfärda för att fånga tråddump:

pid: är process-ID för applikationen, vars tråddump ska fångas

fil-sökväg: är filsökvägen dit tråddump kommer att skrivas in till.

e) Hur förstår man en tråddump?

Här är ett videosamtal som ger en bra detaljerad översikt över hur man förstår tråddumparna.

f) Vilka verktyg används för att analysera en tråddump?

Här är de mest använda verktygen för tråddumpningsanalys: fastThread, Samurai, IBM Thread & Monitor analyzer, Visual VM

3. Högdump

a) Vad är en heapdump?

En heap dump är en ögonblicksbild av ditt programs minne vid en viss tidpunkt. Den innehåller information som vad är objekten i minnet, vilka värden har de, vad är deras storlek, vilka andra objekt refererar de till.

b) Hur ser en heapdumpning ut?

Ett exempel på högdump finns här. (Obs: Det kommer att vara i binärt format. Så du kan faktiskt inte läsa det).

c) Var används en heapdump?

Heap-dumps används främst för att felsöka minnesrelaterade, OutOfMemoryError-problem.

d) Hur genererar man en heapdump?

Heap dump kan fångas från den pågående applikationen med hjälp av 7 olika alternativ. Det vanligaste alternativet för att ta heap dump är att använda ’jmap’-verktyget. jmap-verktyget levereras i mappen JDK_HOMEbin. Här är kommandot som du behöver utfärda för att fånga:

pid: är Java Process Id, vars heapdump ska fångas

fil-sökväg: är filsökvägen dit heap dump kommer att skrivas in till.

e) Hur förstår man en heapdump?

Heap dump-filer är i binärt format och tenderar att vara stora i storlek. Förutom det saknar deras format kraftigt dokumentation. Därför måste du använda verktygen för högdumpningsanalys (givna i nästa fråga) för att analysera och förstå dem.

f) Vilka verktyg används för att analysera en heapdump?

Här är de mest använda verktygen för högdumpningsanalys: Eclipse MAT, HeapHero, JVisualVM.
Vi hoppas att den här artikeln täcker alla metoder för hur man analyserar sophämtningsloggar, tråddumpar och högdumpar. Om du tyckte att den här artikeln verkligen var till hjälp för dig, vänligen dela denna information med dina vänner, släktingar, familj och andra. Vi ses i nästa inlägg med signalfix.net!