Java Academy · Lektion

Analyse med JDK Mission Control

Læs JFR-optagelser

Lektion 3 af 413 trin

Analyse med JDK Mission Control er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.

Hvad er JMC?

JDK Mission Control (JMC) er det grafiske værktøj til at analysere JFR-optagelser.

Det åbner en .jfr-fil og omdanner rå hændelser til oversigter, du kan navigere i: metoder med høj CPU-belastning, GC-adfærd, konkurrence om låse, allokering og meget mere. Det indeholder også siden Automatisk analyse, der markerer sandsynlige problemer.

Hentning af JMC

JMC er en selvstændig download (det blev adskilt fra JDK'et efter JDK 8).

Hent det fra Adoptiums eller Oracles JMC-versioner, start det, og åbn din .jfr-fil med Fil > Åbn fil. Ingen agent eller genstart af din applikation er nødvendig — du analyserer den allerede optagede optagelse.

Siden med automatisk analyse

Det første, JMC viser, er Automatisk analyse: et sæt heuristikker, der vurderer din optagelse.

Den fremhæver forhold som lange GC-pauser, høj allokering, blokerede tråde og indpakning af primitive værdier i objekter. Hvert resultat har en alvorlighedsgrad og en kort forklaring — et godt udgangspunkt, før du undersøger tingene manuelt.

Visningen for metodeprofilering

Siden Metodeprofilering samler udførelsesstikprøver i et kaldetræ.

Metoder med den højeste egen tid er dine CPU-flaskehalse. Du kan skifte mellem visninger fra oven og ned (fra kalder til kaldt metode) og fra neden og op (den belastede metode først) for at forstå både, hvad der er langsomt, og hvem der kalder det.

Flammegrafer

JMC gengiver stackstikprøver som en flammegraf: bredden er proportional med den tid, der bruges.

Brede plateauer øverst i grafen viser, hvor CPU'en faktisk bruger sine cyklusser. Denne visualisering gør det tydeligt, hvilken kaldesti der dominerer, langt hurtigere end hvis du læser en sorteret tabel.

Visningen for affaldsopsamling

GC-siderne viser pausernes varighed og hyppighed samt, hvilken opsamler der kørte.

Se efter lange eller hyppige pauser, der skader latenstiden. En høj allokeringshastighed hænger normalt sammen med hyppige GC'er i den unge generation — løsningen er at reducere oprettelsen og kasseringen af objekter, ikke at skifte opsamler.

Allokeringsflaskehalse

JMC's visning af TLAB-allokeringer rangerer, hvor objekter oprettes.

Kombinér den med stacksporet for at finde den nøjagtige linje, der allokerer i en belastet løkke. Ofte kan en lille ændring — at genbruge en buffer eller undgå automatisk indpakning — reducere presset på affaldsopsamlingen drastisk.

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

Konkurrence om låse

Visningerne Låsinstanser og Java Monitor viser tråde, der venter på synkronisering.

Hvis mange tråde blokerer på den samme monitor, er den lås en skaleringsflaskehals. JMC viser det objekt, som trådene konkurrerer om, samt de ventende stackspor, så du kan målrette den rigtige kritiske sektion.

Visninger af tråde og latenstid

Siden Tråde viser hver tråds tidslinje: på CPU'en, parkeret, venter på I/O eller blokeret.

Sådan bekræfter du, om en opbremsning er CPU-begrænset eller I/O-begrænset — præcis den skelnen, der blev gennemgået i lektionen om flaskehalse. Brede bånd med 'ventende' betyder, at du er I/O- eller låsebegrænset, ikke beregningsbegrænset.

Fra fund til løsning

Arbejdsgangen er: åbn optagelsen, læs Automatisk analyse, gå i dybden med det markerede område (metodeprofilering, GC eller låse), bekræft med flammegrafen og trådvisningen, og formulér derefter en hypotese.

Ændr én ting, optag igen, og sammenlign med dit referencegrundlag. JMC omdanner en binær fil til brugbar indsigt.

Sammenligning af optagelser

Hvis du vil bevise, at en optimering virkede, skal du sammenligne en optagelse fra før og en fra efter.

Optag en JFR-reference, foretag én ændring, optag en ny, og åbn begge i JMC. Se på de samme visninger side om side — metodeprofilering, GC og allokering. En reel forbedring viser sig som lavere egen tid, færre GC-pauser eller en lavere allokeringshastighed. Hvis intet ændrede sig, skal du rulle ændringen tilbage.

Hurtigt tjek

Hvad viser en metodes egen tid (eller et bredt plateau øverst) i JMC's visninger for metodeprofilering og flammegrafer?

Opsummering

JMC læser JFR-optagelser og gør dem anvendelige:

  • Automatisk analyse markerer sandsynlige problemer med det samme.
  • Metodeprofilering og flammegrafer afslører CPU-flaskehalse via egen tid.
  • Visninger af GC og allokering afslører unødvendig oprettelse og kassering af objekter.
  • Visninger af låse og tråde skelner mellem CPU-begrænsning og I/O- eller låsebegrænsning.
  • Gå i dybden, formulér en hypotese, løs ét problem, optag igen, og sammenlign.
Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
104
Lektioner
374

Ofte stillede spørgsmål

Er lektionen “Analyse med JDK Mission Control” gratis?

Ja — hele teksten til “Analyse med JDK Mission Control” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Analyse med JDK Mission Control”?

Læs JFR-optagelser Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Java Academy?

Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Analyse med JDK Mission Control”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Java Academy-lektion?

Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Identificering af flaskehalse
  2. Java Flight Recorder
  3. Analyse med JDK Mission Control
  4. Almindelige JVM-tuningflag
← Tilbage til Java Academy