Java Academy · leksjon

Analysere med JDK Mission Control

Les JFR-opptak

Leksjon 3 av 413 trinn

Analysere med JDK Mission Control er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 4 leksjoner.

Hva er JMC?

JDK Mission Control (JMC) er det grafiske verktøyet for å analysere JFR-opptak.

Det åpner en .jfr-fil og gjør råhendelser om til navigerbare visninger: hotte metoder, GC-atferd, låsekonkurranse, allokering og mer. Det inneholder også en side for Automatisert analyse som markerer sannsynlige problemer.

Hente JMC

JMC lastes ned separat (det ble skilt ut fra JDK etter JDK 8).

Hent det fra Adoptium- eller Oracle-byggene av JMC, start det, og åpne .jfr-filen med Fil > Åpne fil. Ingen agent eller omstart av appen er nødvendig — du analyserer opptaket som allerede er samlet inn.

Siden for automatisert analyse

Det første JMC viser, er Automatisert analyse: et sett med heuristikker som vurderer opptaket.

Den fremhever blant annet lange GC-pauser, høy allokering, blokkerte tråder og boxing fra primitive typer til objekter. Hvert funn har en alvorlighetsgrad og en kort forklaring — et godt utgangspunkt før du undersøker manuelt.

Visning for metodeprofilering

Siden for metodeprofilering samler utføringssamples i et kalltre.

Metoder med høyest egen tid er CPU-hotspotene dine. Du kan bytte mellom visninger ovenfra og ned (fra kallende til kalt metode) og nedenfra og opp (den hotte metoden først) for å forstå både hva som er tregt, og hvem som kaller det.

Flammegrafer

JMC gjengir stack-samples som en flammegraf: bredden er proporsjonal med tiden som brukes.

Brede platåer øverst i grafen viser hvor CPU-en faktisk bruker syklusene sine. Denne visualiseringen gjør det tydelig hvilken kallesti som dominerer, langt raskere enn å lese en sortert tabell.

GC-visning

GC-sidene viser pausevarighet, frekvens og hvilken søppelinnsamler som kjørte.

Se etter lange eller hyppige pauser som påvirker latenstiden. En høy allokeringsrate henger vanligvis sammen med hyppige GC-kjøringer for den unge generasjonen — løsningen er å redusere opprettelsen av objekter, ikke å bytte søppelinnsamler.

Allokerings-hotspots

JMCs visning for TLAB-allokeringer rangerer hvor objekter opprettes.

Kombiner dette med stacksporet for å finne den nøyaktige linjen som allokerer i en varm løkke. Ofte kan en liten endring — å gjenbruke en buffer eller unngå autoboxing — redusere GC-belastningen betydelig.

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

Låsekonkurranse

Visningene låseinstanser og Java Monitor viser tråder som venter på synkronisering.

Hvis mange tråder blokkeres på den samme monitoren, er denne låsen en skaleringsflaskehals. JMC viser objektet det konkurreres om, samt stacksporene til trådene som venter, slik at du kan rette oppmerksomheten mot riktig kritisk seksjon.

Tråd- og latenstidsvisninger

Siden for tråder viser tidslinjen for hver tråd: på CPU, parkert, venter på IO eller blokkert.

Slik bekrefter du om en treghet er CPU-bundet eller IO-bundet — nøyaktig det samme skillet som i leksjonen om flaskehalser. Brede «waiting»-bånd betyr at du er IO- eller låsebetinget, ikke beregningsbetinget.

Fra funn til løsning

Arbeidsflyten er: åpne opptaket, les Automatisert analyse, gå i dybden på området som er flagget (metodeprofilering, GC eller låser), bekreft med flammegrafen og trådvisningen, og formuler deretter en hypotese.

Gjør én endring, ta opp på nytt, og sammenlign med baseline. JMC gjør en binær fil om til innsikt du kan handle på.

Sammenligne opptak

For å bevise at en optimalisering fungerer, sammenligner du et «før»- og et «etter»-opptak.

Ta opp en baseline-JFR, gjør én endring, ta opp et nytt opptak, og åpne begge i JMC. Se på de samme visningene — metodeprofilering, GC og allokering — side om side. En reell forbedring vises som redusert egen tid, færre GC-pauser eller lavere allokeringsrate. Hvis ingenting har endret seg, ruller du tilbake endringen.

Hurtigsjekk

I JMCs metodeprofilerings- og flammegrafvisninger, hva viser en metodes egen tid (eller et bredt platå øverst)?

Oppsummering

JMC leser JFR-opptak og gjør dem nyttige:

  • Automatisert analyse markerer sannsynlige problemer med én gang.
  • Metodeprofilering og flammegrafer viser CPU-hotspots ved hjelp av egen tid.
  • GC- og allokeringsvisninger avdekker høy objektaktivitet.
  • Låse- og trådvisninger skiller mellom CPU-bundet og IO- eller låsebetinget.
  • Gå i dybden, formuler en hypotese, løs ett problem, ta opp på nytt og sammenlign.
Gratis å komme i gang

Lær deg Java med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
104
Leksjoner
374

Ofte stilte spørsmål

Er leksjonen «Analysere med JDK Mission Control» gratis?

Ja – hele teksten i «Analysere med JDK Mission Control» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Analysere med JDK Mission Control»?

Les JFR-opptak Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Java Academy?

Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Analysere med JDK Mission Control»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?

Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Identifisere flaskehalser
  2. Java Flight Recorder
  3. Analysere med JDK Mission Control
  4. Vanlige JVM-innstillinger
← Tilbake til Java Academy