0Pricing
Java Academy · Leçon

Analyser avec JDK Mission Control

Lisez les enregistrements JFR

Analyser avec JDK Mission Control est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.

Qu’est-ce que JMC ?

Le contrôle de mission du JDK (JMC) est l’outil graphique permettant d’analyser les enregistrements JFR.

Il ouvre un fichier .jfr et transforme les événements bruts en vues explorables : méthodes très sollicitées, comportement du ramasse-miettes, contention sur les verrous, allocations, et bien plus. Il comprend également une page d’analyse automatisée qui signale les problèmes probables.

Obtenir JMC

JMC est un téléchargement autonome (il a été séparé du JDK après JDK 8).

Téléchargez-le depuis les versions JMC d’Adoptium ou d’Oracle, lancez-le, puis ouvrez votre fichier .jfr avec Fichier > Ouvrir un fichier. Aucun agent ni redémarrage de votre application n’est nécessaire : vous analysez l’enregistrement déjà capturé.

La page d’analyse automatisée

La première chose que JMC affiche est l’analyse automatisée : un ensemble d’heuristiques qui évaluent votre enregistrement.

Elle met en évidence les longues pauses du ramasse-miettes, un volume élevé d’allocations, les fils d’exécution bloqués et la conversion de types primitifs en objets. Chaque constat comporte un niveau de gravité et une brève explication : c’est un excellent point de départ avant d’approfondir manuellement.

Vue du profilage des méthodes

La page de profilage des méthodes regroupe les échantillons d’exécution dans un arbre d’appels.

Les méthodes dont le temps propre est le plus élevé sont vos points chauds du CPU. Vous pouvez alterner entre les vues descendante (de l’appelant vers l’appelé) et ascendante (la méthode très sollicitée en premier) afin de comprendre à la fois ce qui est lent et qui l’appelle.

Graphiques en flammes

JMC représente les échantillons de pile sous forme de graphique en flammes : la largeur est proportionnelle au temps passé.

Les larges plateaux situés vers le haut du graphique indiquent les endroits où le CPU consomme réellement ses cycles. Cette représentation montre clairement quel chemin d’appels domine, bien plus rapidement que la lecture d’un tableau trié.

Vue du ramasse-miettes

Les pages consacrées au ramasse-miettes affichent la durée et la fréquence des pauses, ainsi que le collecteur utilisé.

Recherchez les pauses longues ou fréquentes qui nuisent à la latence. Un taux d’allocation élevé est généralement corrélé à des collectes fréquentes de la jeune génération : la solution consiste à réduire la création excessive d’objets, et non à changer de collecteur.

Points chauds des allocations

La vue Allocations TLAB de JMC classe les endroits où les objets sont créés.

Associez-la à la trace de pile pour trouver la ligne exacte qui effectue l’allocation dans une boucle très sollicitée. Souvent, une petite modification — réutiliser un tampon ou éviter l’emballage automatique — réduit considérablement la pression exercée sur le ramasse-miettes.

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

Contention sur les verrous

Les vues Instances de verrous et Moniteur Java révèlent les fils d’exécution qui attendent une synchronisation.

Si de nombreux fils d’exécution se bloquent sur le même moniteur, ce verrou constitue un goulet d’étranglement qui limite la montée en charge. JMC affiche l’objet faisant l’objet de la contention et les traces de pile en attente afin que vous puissiez cibler la bonne section critique.

Vues des fils d’exécution et de la latence

La page Fils d’exécution affiche la chronologie de chaque fil : en cours d’exécution sur le CPU, en veille, en attente d’IO ou bloqué.

C’est ainsi que vous confirmez si un ralentissement est limité par le CPU ou par les IO — exactement la distinction présentée dans la leçon sur les goulets d’étranglement. De larges bandes « en attente » signifient que la limitation vient des IO ou des verrous, et non du calcul.

Du constat à la correction

Le processus est le suivant : ouvrez l’enregistrement, lisez l’analyse automatisée, approfondissez la zone signalée (profilage des méthodes, ramasse-miettes ou verrous), confirmez avec le graphique en flammes et la vue des fils d’exécution, puis formulez une hypothèse.

Modifiez un seul élément, effectuez un nouvel enregistrement et comparez-le à votre référence de base. JMC transforme un fichier binaire en informations exploitables.

Comparer des enregistrements

Pour démontrer qu’une optimisation a fonctionné, comparez un enregistrement « avant » et un enregistrement « après ».

Capturez un JFR de référence, appliquez une seule modification, capturez-en un autre, puis ouvrez les deux dans JMC. Examinez les mêmes vues — profilage des méthodes, ramasse-miettes, allocations — côte à côte. Une amélioration réelle se traduit par une réduction du temps propre, moins de pauses du ramasse-miettes ou un taux d’allocation inférieur. Si rien n’a changé, annulez la modification.

Vérification rapide

Dans les vues de profilage des méthodes et de graphique en flammes de JMC, qu’indique le temps propre d’une méthode (ou un large plateau en haut du graphique) ?

Récapitulatif

JMC lit les enregistrements JFR et les rend exploitables :

  • L’analyse automatisée signale d’emblée les problèmes probables.
  • Le profilage des méthodes et les graphiques en flammes révèlent les points chauds du CPU grâce au temps propre.
  • Les vues du ramasse-miettes et des allocations mettent en évidence la création excessive d’objets.
  • Les vues des verrous et des fils d’exécution distinguent les charges limitées par le CPU de celles limitées par les IO ou les verrous.
  • Approfondissez, formulez une hypothèse, corrigez un seul élément, effectuez un nouvel enregistrement, puis comparez.

Questions Fréquemment Posées

La leçon « Analyser avec JDK Mission Control » est-elle gratuite ?

Oui — le texte complet de « Analyser avec JDK Mission Control » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Analyser avec JDK Mission Control » ?

Lisez les enregistrements JFR Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Analyser avec JDK Mission Control » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Identifier les goulots d’étranglement
  2. Java Flight Recorder
  3. Analyser avec JDK Mission Control
  4. Options courantes de réglage de la JVM
← Retour à Java Academy