Java Virtual Machine (JVM) genereert 3 kritieke artefacten die nuttig zijn voor het optimaliseren van de prestaties en het oplossen van productieproblemen. Die artefacten zijn:

  1. Logboek voor vuilnisophaling (GC)
  2. Thread Dump
  3. Heap Dump

1. Logboek voor vuilnisophaaldienst

a) Wat is een GC-logboek?

GC Log bevat informatie over ophaalgebeurtenissen. Het geeft aan hoeveel GC-gebeurtenissen zijn uitgevoerd, welk type dit commando deze opdracht van GC-gebeurtenissen is (dwz Jonge GC of Volledige GC), hoe lang elke GC-gebeurtenis de toepassing pauzeert, hoeveel objecten elk GC-gebeurtenis heeft teruggewonnen.

b) Hoe ziet een GC-logboek eruit?

Een voorbeeld van een logbestand voor het ophalen van afval is hier te vinden.

c) Waar worden GC-logboeken gebruikt?

Garbage collection-logboeken worden gebruikt om de GC- en geheugenprestaties van de toepassing te bestuderen. Het wordt gebruikt om de GC-pauzetijden te optimaliseren, het wordt gebruikt om de optimale geheugengrootte voor uw toepassing te identificeren, het wordt ook gebruikt om geheugengerelateerde problemen op te lossen.

d) Hoe een GC-logboek genereren?

U kunt logboeken voor garbagecollection genereren door de volgende JVM-argumenten door te geven:

Op Java-versies tot 8:

Op Java-versie vanaf 9:

bestandspad: is de locatie waar het logbestand van de Garbage Collection wordt geschreven.

e) Hoe een GC-logboek begrijpen?

De indeling van het logbestand voor het verzamelen van afval varieert afhankelijk van wie uw JVM-leverancier is (Oracle, HP, IBM, Azul, ..), Java-versie (1.5, 5, 6, 7, 8, 9, 10, 11, 12, …), afval verzamelingsalgoritme (Serial, Parallel, CMS, G1, Shenandoah, Z GC) en JVM-argumenten die u doorgeeft. Er is dus niet één gestandaardiseerd formaat beschikbaar. Hier is echter een videozelfstudie die u probeert te helpen het GC-logbestandsformaat te begrijpen.

f) Welke tools worden gebruikt om een ​​GC-logboek te analyseren?

Er zijn meerdere tools voor het analyseren van logboeken voor het verzamelen van afval. Enkele van de populaire worden hier gegeven: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Draaddump

a) Wat is een threaddump?

Een threaddump is een momentopname van alle threads die op een bepaald moment in de toepassing worden uitgevoerd. Het bevat alle informatie over elke thread in de toepassing, zoals threadstatus, thread-ID, native id, threadnaam, stacktracering en prioriteit.

b) Hoe ziet een threaddump eruit?

Een voorbeeld van een threaddump is hier te vinden.

c) Waar wordt een draaddump gebruikt?

Threaddumps worden voornamelijk gebruikt voor het oplossen van productieproblemen, zoals CPU-pieken, niet-reagerend in de toepassing, slechte responstijd, vastgelopen threads, hoog geheugengebruik.

d) Hoe een threaddump genereren?

Threaddumps kunnen worden vastgelegd vanuit de actieve toepassing met behulp van 8 verschillende opties. De meest gebruikelijke optie om threaddump te maken, is om de ‘jstack’-tool te gebruiken. jstack-tool wordt geleverd in de map JDK_HOMEbin. Hier is de opdracht die u moet geven om threaddump vast te leggen:

pid: is de proces-ID van de toepassing waarvan de threaddump moet worden vastgelegd

bestandspad: is het bestandspad waarnaar de threaddump wordt geschreven.

e) Hoe een threaddump te begrijpen?

Hier is een videogesprek dat een goed gedetailleerd overzicht geeft van hoe u de threaddumps kunt begrijpen.

f) Welke tools worden gebruikt om een ​​threaddump te analyseren?

Dit zijn de meest gebruikte threaddump-analysetools: fastThread, Samurai, IBM Thread & Monitor-analysator, Visual VM

3. Heap Dump

a) Wat is een heapdump?

Een heap dump is een momentopname van het geheugen van uw toepassing op een bepaald moment. Het bevat informatie zoals wat de objecten in het geheugen zijn, welke waarden ze dragen, wat hun grootte is, naar welke andere objecten ze verwijzen.

b) Hoe ziet een heapdump eruit?

Een voorbeeld van een heap dump is hier te vinden. (Opmerking: het zal in binair formaat zijn. Je kunt het dus eigenlijk niet lezen).

c) Waar wordt een heapdump gebruikt?

Heap-dumps worden voornamelijk gebruikt voor het oplossen van geheugengerelateerde OutOfMemoryError-problemen.

d) Hoe een heapdump genereren?

Heap dump kan worden vastgelegd vanuit de actieve toepassing met behulp van 7 verschillende opties. De meest gebruikelijke optie om heap dump te nemen is om de ‘jmap’-tool te gebruiken. jmap-tool wordt geleverd in de map JDK_HOMEbin. Hier is de opdracht die u moet geven om vast te leggen:

pid: is de Java Process Id, waarvan de heap dump moet worden vastgelegd

bestandspad: is het bestandspad waarnaar de heapdump wordt geschreven.

e) Hoe een heapdump te begrijpen?

Heap dump-bestanden hebben een binair formaat en zijn meestal groot. Daarnaast ontbreekt het hun formaat zwaar aan documentatie. U moet dus de heap dump-analysetools gebruiken (gegeven in de volgende vraag) om ze te analyseren en te begrijpen.

f) Welke tools worden gebruikt om een ​​heapdump te analyseren?

Hier zijn de meest gebruikte heap dump-analysetools: Eclipse MAT, HeapHero, JVisualVM.
We hopen dat dit artikel alle methoden behandelt voor het analyseren van afvalverzamelingslogboeken, threaddumps en heapdumps. Als je dit artikel echt nuttig voor je vond, deel deze informatie dan met je vrienden, familieleden, familie en anderen. Tot ziens in de volgende berichten met signalfix.net!