Java Virtual Machine (JVM) genererer 3 kritiske artefakter som er nyttige for å optimalisere ytelsen og feilsøke produksjonsproblemer. Disse gjenstandene er:

  1. Søppeloppsamlingslogg (GC).
  2. Tråddump
  3. Heap Dump

1. Søppeloppsamlingslogg

a) Hva er en GC-logg?

GC-loggen inneholder informasjon relatert til søppelinnsamlingshendelser. Den vil indikere hvor mange GC-hendelser som kjørte, hvilken type denne kommandoen denne kommandoen for GC-hendelser de er (dvs. Young GC eller Full GC), hvor lenge hver GC-hendelse pause programmet, hvor mange objekter gjenvunnet hver GC-hendelse.

b) Hvordan ser en GC-logg ut?

Eksempel på søppelinnsamlingsloggfil finner du her.

c) Hvor brukes GC-logger?

Søppeloppsamlingslogger brukes til å studere applikasjonens GC og minneytelse. Den brukes til å optimalisere GC-pausetidene, den brukes til å identifisere optimal minnestørrelse for applikasjonen din, den brukes også til å feilsøke minnerelaterte problemer.

d) Hvordan generere en GC-logg?

Du kan generere søppeloppsamlingslogger ved å sende følgende JVM-argumenter:

På Java-versjoner frem til 8:

På Java-versjon fra 9:

fil-bane: er stedet der Garbage Collection-loggfilen vil bli skrevet.

e) Hvordan forstå en GC-logg?

Søppelinnsamlingsloggformatet varierer avhengig av hvem som er JVM-leverandøren din (Oracle, HP, IBM, Azul, ..), Java-versjon (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), søppel innsamlingsalgoritme (Serial, Parallel, CMS, G1, Shenandoah, Z GC) og JVM-argumenter du passerer. Det er derfor ikke ett standardisert format tilgjengelig. Men her er en videoopplæring som prøver å hjelpe deg med å forstå GC-loggfilformatet.

f) Hvilke verktøy brukes til å analysere en GC-logg?

Det finnes flere analyseverktøy for søppelinnsamlingslogg. Noen av de populære er gitt her: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Tråddump

a) Hva er en tråddump?

En tråddump er et øyeblikksbilde av alle tråder som kjører i applikasjonen på et tidspunkt. Den inneholder all informasjon om hver tråd i applikasjonen, for eksempel trådtilstand, tråd-ID, opprinnelig ID, trådnavn, stabelsporing og prioritet.

b) Hvordan ser en tråddumping ut?

Et eksempel på tråddump finner du her.

c) Hvor brukes en tråddump?

Tråddumper brukes først og fremst for feilsøking av produksjonsproblemer som CPU-spikes, manglende respons i applikasjonen, dårlig responstid, hengte tråder, høyt minneforbruk.

d) Hvordan generere en tråddump?

Tråddumper kan fanges opp fra det kjørende programmet ved å bruke 8 forskjellige alternativer. Det vanligste alternativet for å ta tråddump er å bruke ‘jstack’-verktøyet. jstack-verktøyet sendes i mappen JDK_HOMEbin. Her er kommandoen du må utstede for å fange tråddump:

pid: er prosess-ID-en til applikasjonen, hvis tråddump skal fanges opp

filbane: er filbanen der tråddumpen vil bli skrevet inn.

e) Hvordan forstå en tråddump?

Her er en videoprat som gir en god detaljert oversikt over hvordan man forstår tråddumpene.

f) Hvilke verktøy brukes til å analysere en tråddump?

Her er de mest brukte tråddumpanalyseverktøyene: fastThread, Samurai, IBM Thread & Monitor analyzer, Visual VM

3. Bunndump

a) Hva er en haugdump?

En heap dump er et øyeblikksbilde av programmets minne på et tidspunkt. Den inneholder informasjon som hva er objektene i minnet, hvilke verdier har de, hva er deres størrelse, hvilke andre objekter refererer de til.

b) Hvordan ser en haugdumping ut?

Du finner en prøvehaug her. (Merk: Den kommer til å være i binært format. Så du kan faktisk ikke lese den).

c) Hvor brukes en haugdump?

Heap dumps brukes først og fremst til å feilsøke minnerelaterte, OutOfMemoryError-problemer.

d) Hvordan generere en haugdump?

Heap dump kan fanges opp fra den kjørende applikasjonen ved å bruke 7 forskjellige alternativer. Det vanligste alternativet for å ta heap dump er å bruke ‘jmap’-verktøyet. jmap-verktøyet leveres i mappen JDK_HOMEbin. Her er kommandoen du må utstede for å fange:

pid: er Java-prosess-ID, hvis heapdump skal fanges opp

file-path: er filbanen der heap dump vil bli skrevet inn til.

e) Hvordan forstå en haugdump?

Heap dump-filer er i binært format og har en tendens til å være store i størrelse. Utenom det mangler formatet sterkt dokumentasjon. Derfor må du bruke heap dump-analyseverktøyene (gitt i neste spørsmål) for å analysere og forstå dem.

f) Hvilke verktøy brukes til å analysere en haugdump?

Her er de mest brukte heap dump analyseverktøyene: Eclipse MAT, HeapHero, JVisualVM.
Vi håper at denne artikkelen dekker alle metodene for hvordan du analyserer søppeloppsamlingslogger, tråddumper og haugedypninger. Hvis du fant denne artikkelen virkelig nyttig for deg, vennligst del denne informasjonen med venner, slektninger, familie og andre. Vi sees i de neste innleggene med signalfix.net!