Java Academy · Les

Analyseren met JDK Mission Control

JFR-opnamen lezen

Les 3 van 413 stappen

Analyseren met JDK Mission Control is een gratis Java Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.

Wat is JMC?

JDK Mission Control (JMC) is het grafische hulpmiddel voor het analyseren van JFR-opnamen.

Het opent een .jfr-bestand en zet onbewerkte gebeurtenissen om in navigeerbare weergaven: methoden met hoge belasting, GC-gedrag, vergrendelingscontentie, allocatie en meer. Het bevat ook een pagina voor geautomatiseerde analyse die waarschijnlijke problemen markeert.

JMC downloaden

JMC is een zelfstandige download (het werd na JDK 8 losgekoppeld van de JDK).

Download het uit de JMC-versies van Adoptium of Oracle, start het en open je .jfr-bestand met Bestand > Bestand openen. Er is geen agent of herstart van je toepassing nodig — je analyseert de al vastgelegde opname.

De pagina voor geautomatiseerde analyse

Het eerste wat JMC toont is geautomatiseerde analyse: een reeks heuristieken die je opname beoordelen.

De pagina markeert onder meer lange GC-pauzes, hoge allocatie, geblokkeerde threads en het omzetten van primitieve waarden naar objecten. Elke bevinding heeft een ernstniveau en een korte uitleg — een uitstekend startpunt voordat je handmatig verder onderzoekt.

Weergave voor methodeprofilering

De pagina methodeprofilering voegt uitvoeringssteekproeven samen tot een aanroeproepboom.

Methoden met de hoogste eigen tijd zijn je CPU-knelpunten. Je kunt wisselen tussen top-downweergaven (van aanroeper naar aangeroepen methode) en bottom-upweergaven (waarbij de drukst belaste methode eerst komt) om te begrijpen wat traag is en wie het aanroept.

Vlamgrafieken

JMC geeft stacksteekproeven weer als een vlamgrafiek: de breedte is evenredig aan de bestede tijd.

Brede plateaus boven in de grafiek tonen waar de CPU werkelijk zijn cycli besteedt. Deze visuele weergave maakt duidelijk welk aanroeppad overheerst, veel sneller dan het lezen van een gesorteerde tabel.

Weergave van garbagecollection

De GC-pagina's tonen de duur en frequentie van pauzes en welke collector actief was.

Let op lange of frequente pauzes die de latentie schaden. Een hoge allocatiesnelheid houdt meestal verband met frequente GC's van de jonge generatie — de oplossing is het verminderen van het voortdurend aanmaken en weggooien van objecten, niet het wijzigen van de collector.

Allocatieknelpunten

De weergave TLAB-allocaties van JMC rangschikt waar objecten worden aangemaakt.

Combineer dit met de stacktrace om de exacte regel te vinden waarop in een intensief gebruikte lus allocatie plaatsvindt. Vaak vermindert een kleine wijziging — een buffer hergebruiken of automatische omzetting naar objecten vermijden — de druk op de garbagecollector drastisch.

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");
    }
}

Vergrendelingscontentie

De weergaven vergrendelingsinstanties en Java-monitors laten zien welke threads op synchronisatie wachten.

Als veel threads op dezelfde monitor blokkeren, is die vergrendeling een schaalbaarheidsknelpunt. JMC toont het object waarop contentie optreedt en de stacktraces van wachtende threads, zodat je het juiste kritieke gedeelte kunt aanpakken.

Weergaven van threads en latentie

De pagina Threads toont de tijdlijn van elke thread: actief op de CPU, geparkeerd, wachtend op IO of geblokkeerd.

Zo bevestig je of een vertraging CPU- of IO-gebonden is — precies het onderscheid uit de les over knelpunten. Brede banden met 'wachten' betekenen dat je IO- of vergrendelingsgebonden bent, niet rekengebonden.

Van bevinding naar oplossing

De werkwijze is: open de opname, lees de geautomatiseerde analyse, ga dieper in op het gemarkeerde gebied (methodeprofilering, GC of vergrendelingen), bevestig je bevinding met de vlamgrafiek en de threadweergave en formuleer vervolgens een hypothese.

Verander één ding, maak opnieuw een opname en vergelijk die met je referentiemeting. JMC maakt van een binair bestand bruikbaar inzicht.

Opnamen vergelijken

Om te bewijzen dat een optimalisatie werkt, vergelijk je een opname van vóór en een opname van na de wijziging.

Maak een referentie-JFR-opname, pas één wijziging toe, maak nog een opname en open beide in JMC. Bekijk dezelfde weergaven — methodeprofilering, GC en allocatie — naast elkaar. Een echte verbetering blijkt uit minder eigen tijd, minder GC-pauzes of een lagere allocatiesnelheid. Als er niets is veranderd, draai je de wijziging terug.

Korte controle

Wat geeft de eigen tijd van een methode (of een breed plateau boven in de grafiek) aan in de methodeprofilerings- en vlamgrafiekweergaven van JMC?

Samenvatting

JMC leest JFR-opnamen en maakt ze bruikbaar:

  • Geautomatiseerde analyse markeert waarschijnlijke problemen meteen.
  • Methodeprofilering en vlamgrafieken onthullen CPU-knelpunten via eigen tijd.
  • Weergaven van GC en allocatie brengen het voortdurend aanmaken en opruimen van geheugen aan het licht.
  • Weergaven van vergrendelingen en threads maken onderscheid tussen CPU-gebonden en IO- of vergrendelingsgebonden werk.
  • Ga dieper, formuleer een hypothese, herstel één ding, maak opnieuw een opname en vergelijk.
Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
104
Lessen
374

Veelgestelde vragen

Is de les “Analyseren met JDK Mission Control” gratis?

Ja — de volledige tekst van “Analyseren met JDK Mission Control” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.

Wat leer ik in “Analyseren met JDK Mission Control”?

JFR-opnamen lezen Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Java Academy te beginnen?

Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Analyseren met JDK Mission Control”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Java Academy?

Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Bottlenecks identificeren
  2. Java Flight Recorder
  3. Analyseren met JDK Mission Control
  4. Veelgebruikte JVM-tuningflags
← Terug naar Java Academy