Analysointi JDK Mission Controlilla
Lue JFR-tallenteita.
Analysointi JDK Mission Controlilla on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mikä JMC on?
JDK Mission Control (JMC) on graafinen työkalu JFR-tallenteiden analysointiin.
Se avaa .jfr-tiedoston ja muuttaa raakatapahtumat selattaviksi näkymiksi: kuumiksi metodeiksi, GC:n toiminnaksi, lukituskilpailuksi, allokoinniksi ja muiksi tiedoiksi. Se sisältää myös Automated Analysis -sivun, joka ilmoittaa todennäköisistä ongelmista.
JMC:n hankkiminen
JMC on erikseen ladattava ohjelma, jota ei enää toimitettu JDK:n mukana JDK 8:n jälkeen.
Ladatkaa se Adoptiumin tai Oraclen JMC-koontiversioista, käynnistäkää se ja avatkaa .jfr-tiedosto valitsemalla File > Open File. Sovellukseen ei tarvita agenttia eikä uudelleenkäynnistystä — analysoitte jo tallennettua tallennetta.
Automated Analysis -sivu
Ensimmäisenä JMC näyttää Automated Analysis -näkymän: joukon heuristiikkoja, jotka arvioivat tallennetta.
Se nostaa esiin esimerkiksi pitkät GC-tauot, runsaan allokoinnin, estyneet säikeet ja primitiivityyppien muuntamisen olioiksi. Jokaisella havainnolla on vakavuusaste ja lyhyt selitys — tämä on erinomainen lähtökohta ennen manuaalista tutkimista.
Method Profiling -näkymä
Method Profiling -sivu kokoaa suorituksen näytteet kutsupuuksi.
Metodit, joilla on suurin self time, ovat CPU:n hotspotit. Voitte vaihtaa ylhäältä alas (kutsujasta kutsuttuun) ja alhaalta ylös (kuuma metodi ensin) esittävien näkymien välillä ymmärtääksenne sekä sen, mikä on hidasta, että sen, kuka sitä kutsuu.
Flame graphit
JMC esittää pinojen näytteet flame graphina: leveys on suhteessa käytettyyn aikaan.
Kaavion yläosan leveät tasanteet osoittavat, missä CPU todella käyttää jaksonsa. Tämän visualisoinnin avulla näkee heti, mikä kutsupolku hallitsee suoritusta — huomattavasti nopeammin kuin lajiteltua taulukkoa lukemalla.
Roskienkeruunäkymä
GC-sivut näyttävät taukojen kestot ja tiheyden sekä sen, mikä roskienkerääjä suoritettiin.
Etsikää pitkiä tai usein toistuvia taukoja, jotka heikentävät latenssia. Suuri allokointinopeus korreloi yleensä usein toistuvien nuoren sukupolven GC-ajojen kanssa — ratkaisu on olioiden jatkuvan luomisen vähentäminen, ei roskienkerääjän vaihtaminen.
Allokoinnin hotspotit
JMC:n TLAB Allocations -näkymä järjestää sen mukaan, missä olioita luodaan.
Yhdistäkää tämä pinon jäljitykseen löytääksenne tarkan rivin, joka tekee allokoinnin kuumassa silmukassa. Usein pieni muutos — puskurin uudelleenkäyttö tai autoboxingin välttäminen — vähentää GC:n kuormitusta huomattavasti.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Autoboxing: each add boxes an int into an Integer object
List<Integer> boxed = new ArrayList<>();
for (int i = 0; i < 5; i++) boxed.add(i);
System.out.println("Boxed " + boxed.size() + " Integers");
System.out.println("JMC allocation view would flag this hotspot");
}
}Lukituskilpailu
Lock Instances - ja Java Monitor -näkymät paljastavat säikeet, jotka odottavat synkronointia.
Jos monet säikeet estyvät saman monitorin vuoksi, kyseinen lukitus on skaalautuvuuden pullonkaula. JMC näyttää kiistanalaisen olion ja odottavien säikeiden pinon jäljitykset, joten voitte kohdistaa korjauksen oikeaan kriittiseen osioon.
Säie- ja latenssinäkymät
Threads-sivu näyttää kunkin säikeen aikajanan: suorittimella, parkissa, I/O:ta odottamassa tai estyneenä.
Näin voitte varmistaa, onko hidastuminen CPU- vai I/O-sidonnaista — juuri tämän eron käsittelimme pullonkauloja koskevassa oppitunnissa. Leveät ”waiting”-kaistat tarkoittavat, että suoritus on I/O- tai lukitussidonnaista eikä laskentasidonnaista.
Havainnosta korjaukseen
Työnkulku on seuraava: avatkaa tallenne, lukekaa Automated Analysis, siirtykää ilmoitettuun alueeseen (metodiprofilointi, GC tai lukitukset), varmistakaa havainto flame graphin ja säienäkymän avulla ja muodostakaa sitten hypoteesi.
Muuttakaa yhtä asiaa, tallentakaa uudelleen ja verratkaa tulosta vertailutasoonne. JMC muuttaa binaaritiedoston käytännön toimenpiteitä tukevaksi tiedoksi.
Tallenteiden vertaaminen
Osoittaaksenne optimoinnin toimivuuden verratkaa ”ennen”- ja ”jälkeen”-tallennetta.
Ottakaa vertailutason JFR-tallenne, tehkää yksi muutos, ottakaa toinen tallenne ja avatkaa molemmat JMC:ssä. Tarkastelkaa samoja näkymiä — metodiprofilointia, GC:tä ja allokointia — rinnakkain. Todellinen parannus näkyy pienempänä self time -arvona, vähäisempinä GC-taukoina tai pienempänä allokointinopeutena. Jos mikään ei muuttunut, palauttakaa muutos.
Pikatarkistus
Mitä metodin self time (tai kaavion yläosan leveä tasanne) osoittaa JMC:n metodiprofilointi- ja flame graph -näkymissä?
Yhteenveto
JMC lukee JFR-tallenteita ja muuttaa ne käytännön toimenpiteitä tukeviksi:
- Automated Analysis ilmoittaa todennäköisistä ongelmista heti aluksi.
- Metodiprofilointi ja flame graphit paljastavat CPU-hotspotit self time -arvon avulla.
- GC- ja allokointinäkymät paljastavat muistin käytön jatkuvan vaihtuvuuden.
- Lukitus- ja säienäkymät erottavat CPU-sidonnaisuuden I/O- tai lukitussidonnaisuudesta.
- Tutkikaa yksityiskohtia, muodostakaa hypoteesi, korjatkaa yksi asia, tallentakaa uudelleen ja verratkaa tuloksia.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Analysointi JDK Mission Controlilla” ilmainen?
Kyllä – oppitunnin ”Analysointi JDK Mission Controlilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Analysointi JDK Mission Controlilla”?
Lue JFR-tallenteita. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Analysointi JDK Mission Controlilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Pullonkaulojen tunnistaminen
- Java Flight Recorder
- Analysointi JDK Mission Controlilla
- Yleiset JVM:n säätövalitsimet