Java Virtual Machine (JVM) luo 3 kriittistä artefaktia, jotka ovat hyödyllisiä suorituskyvyn optimoinnissa ja tuotantoongelmien vianmäärityksessä. Nämä esineet ovat:

  1. Jätekeräysloki (GC).
  2. Thread Dump
  3. Kasan kaatopaikka

1. Roskakoriloki

a) Mikä on GC-loki?

GC Log sisältää roskakoritapahtumiin liittyviä tietoja. Se ilmaisee kuinka monta GC-tapahtumaa suoritettiin, minkä tyyppinen tämä komento tämä GC-tapahtumien komento on (eli Young GC tai Full GC), kuinka kauan kukin GC-tapahtuma keskeyttää sovelluksen, kuinka paljon objekteja kukin GC-tapahtuma vaati takaisin.

b) Miltä GC-loki näyttää?

Esimerkki roskatkeräyslokitiedostosta löytyy täältä.

c) Missä GC-lokeja käytetään?

Roskienkeräyslokeilla tutkitaan sovelluksen GC:n ja muistin suorituskykyä. Sitä käytetään GC-taukoaikojen optimointiin, sovelluksesi optimaalisen muistin koon tunnistamiseen sekä muistiin liittyvien ongelmien vianmääritykseen.

d) Kuinka luodaan GC-loki?

Voit luoda roskatkeräyslokeja välittämällä seuraavat JVM-argumentit:

Java-versioissa 8 asti:

Java-versiossa 9 alkaen:

file-path: on paikka, johon Roskakorilokitiedosto kirjoitetaan.

e) Kuinka ymmärtää GC-loki?

Jätteenkeräyslokin muoto vaihtelee riippuen siitä, kuka on JVM-toimittajasi (Oracle, HP, IBM, Azul, ..), Java-version (1.5, 5, 6, 7, 8, 9, 10, 11, 12,…), roskien mukaan. kokoelma-algoritmi (Serial, Parallel, CMS, G1, Shenandoah, Z GC) ja hyväksymäsi JVM-argumentit. Yhtä standardimuotoa ei siis ole saatavilla. Tässä on kuitenkin opetusvideo, joka yrittää auttaa sinua ymmärtämään GC-lokitiedostomuotoa.

f) Mitä työkaluja käytetään GC-lokin analysointiin?

On olemassa useita roskakeräyslokien analysointityökaluja. Jotkut suosituimmista on annettu tässä: GCeasy, IBM GC & Memory visualizer, HP JMeter, Google Garbage Cat

2. Thread Dump

a) Mikä on lankavedos?

Säikeen vedos on tilannekuva kaikista sovelluksessa kulloinkin käynnissä olevista säikeistä. Se sisältää kaikki tiedot kustakin sovelluksen säikeestä, kuten säikeen tilan, säikeen tunnuksen, alkuperäisen tunnuksen, säikeen nimen, pinon jäljityksen ja prioriteetin.

b) Miltä langan kaatopaikka näyttää?

Esimerkki lankavedosta löytyy täältä.

c) Missä langankaappausta käytetään?

Säikeenvedoksia käytetään ensisijaisesti tuotantoongelmien, kuten prosessoripiikkien, sovelluksen reagoimattomuuden, huonon vasteajan, roikkuvien säikeiden ja suuren muistin kulutuksen, vianmäärityksessä.

d) Kuinka luodaan ketjuvedos?

Säikeen vedosten voi kaapata käynnissä olevasta sovelluksesta 8 eri vaihtoehdolla. Yleisin vaihtoehto ketjuvedosten tekemiseen on käyttää ”jstack”-työkalua. jstack-työkalu toimitetaan JDK_HOMEbin-kansiossa. Tässä on komento, joka sinun on annettava säikeen vedosten kaappaamiseksi:

pid: on sovelluksen prosessitunnus, jonka säikeen vedos tulee kaapata

file-path: on tiedostopolku, johon säikeen vedos kirjoitetaan.

e) Kuinka ymmärtää ketjuvedos?

Tässä on videokeskustelu, joka antaa hyvän yksityiskohtaisen yleiskatsauksen siitä, miten säikeen kaatopaikat ymmärretään.

f) Mitä työkaluja käytetään langanvedon analysointiin?

Tässä ovat yleisimmin käytetyt säikeenvedosanalyysityökalut: fastThread, Samurai, IBM Thread & Monitor -analysaattori, Visual VM

3. Kasan tyhjennys

a) Mikä on kasan kaatopaikka?

Keon vedos on tilannekuva sovelluksesi muistista tietyllä hetkellä. Se sisältää tietoja, kuten mitä objektit muistissa ovat, mitä arvoja niillä on, mikä on niiden koko, mihin muihin objekteihin ne viittaavat.

b) Miltä kasan kaatopaikka näyttää?

Näytekasavedos löytyy täältä. (Huomaa: Se tulee olemaan binäärimuodossa. Et siis itse asiassa voi lukea sitä).

c) Missä kasakaappia käytetään?

Kekovedoksia käytetään ensisijaisesti muistiin liittyvien OutOfMemoryError-ongelmien vianmääritykseen.

d) Kuinka luoda kasavedos?

Heap dump voidaan kaapata käynnissä olevasta sovelluksesta 7 eri vaihtoehdolla. Yleisin vaihtoehto keon vedosten tekemiseen on jmap-työkalun käyttö. jmap-työkalu toimitetaan JDK_HOMEbin-kansiossa. Tässä on komento, joka sinun on annettava kaapataksesi:

pid: on Java-prosessin tunnus, jonka keon vedos tulee kaapata

file-path: on tiedostopolku, johon keon vedos kirjoitetaan.

e) Kuinka ymmärtää kasan kaatopaikka?

Keon vedostiedostot ovat binäärimuodossa ja ovat yleensä suuria. Lisäksi niiden formaatista puuttuu paljon dokumentaatiota. Siksi sinun on käytettävä kason vedosanalyysityökaluja (jotka annetaan seuraavassa kysymyksessä) analysoidaksesi ja ymmärtääksesi niitä.

f) Mitä työkaluja kasavedon analysointiin käytetään?

Tässä ovat yleisimmin käytetyt kasonvedosanalyysityökalut: Eclipse MAT, HeapHero, JVisualVM.
Toivomme, että tämä artikkeli kattaa kaikki menetelmät roskakeräyslokien, säikeen kaatopaikkojen ja kasajätteiden analysointiin. Jos pidit tästä artikkelista todella hyödyllistä sinulle, jaa tämä tieto ystävillesi, sukulaisillesi, perheellesi ja muille. Nähdään seuraavissa postauksissa signalfix.net!