0Pricing
Java Academy · Leçon

Options de réglage du GC et profilage avec JVisualVM

Définissez les options de taille du tas, activez la journalisation du GC et utilisez JVisualVM pour profiler l’utilisation du tas dans une application en fonctionnement.

Options de réglage du GC et profilage avec JVisualVM est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.

Pourquoi régler le ramasse-miettes ?

Les paramètres par défaut du ramasse-miettes conviennent bien à de nombreuses applications, mais les charges de travail à haut débit ou à faible latence peuvent nécessiter un réglage. Mesurez d'abord : ne réglez jamais les paramètres à l'aveugle.

Options de taille du tas

Définissez le tas initial (-Xms) et maximal (-Xmx). En production, définissez-les à la même valeur pour éviter les pauses dues au redimensionnement dynamique. Commencez avec 60 à 70 % de la RAM disponible.

// Example production flags:
java -Xms2g -Xmx2g -XX:+UseG1GC MyApp
// Avoid:
java -Xmx8g MyApp  // initial = 256m, max = 8g → resizing pauses

Taille de la jeune génération

Augmentez la jeune génération pour les applications qui effectuent beaucoup d'allocations afin de réduire la fréquence des collectes mineures. Utilisez -Xmn ou -XX:NewRatio (rapport ancienne génération:jeune génération, valeur par défaut : 2).

// Set Young Gen to 1 GB:
java -Xmx4g -Xmn1g MyApp
// Or via ratio:
java -Xmx4g -XX:NewRatio=3 MyApp  // 3GB old, 1GB young

Cible de pause de G1

Définissez -XX:MaxGCPauseMillis pour indiquer à G1 votre durée maximale de pause souhaitée. G1 règle son ensemble de collecte pour atteindre cette cible, mais il s'agit d'un objectif et non d'une garantie stricte.

java -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xmx8g MyApp
// G1 will try to keep pauses under 100 ms

Nombre de fils d'exécution du ramasse-miettes

Contrôlez le parallélisme avec -XX:ParallelGCThreads (fils d'exécution lors de l'arrêt du monde) et -XX:ConcGCThreads (fils d'exécution concurrents pour G1/ZGC).

// On an 8-core machine:
java -XX:+UseG1GC -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2 MyApp

Activer la journalisation du ramasse-miettes (JVM 9+)

Utilisez l'infrastructure Xlog pour enregistrer les événements du ramasse-miettes. Analysez les journaux hors ligne afin de repérer les longues pauses, les vagues d'allocations et les échecs de promotion.

java -Xlog:gc*:file=gc.log:time,uptime,level,tags:filecount=5,filesize=20m MyApp

Avertissement concernant les objets volumineux

Les objets dont la taille dépasse 50 % d'une région G1 sont « volumineux » et contournent la jeune génération pour aller directement dans l'ancienne génération. Cela peut provoquer une fragmentation. Gardez les objets volumineux de petite taille ou augmentez la taille des régions.

// Increase G1 region size (range: 1 MB to 32 MB, must be power of 2):
java -XX:+UseG1GC -XX:G1HeapRegionSize=16m -Xmx16g MyApp

Présentation de JVisualVM

JVisualVM (fourni avec JDK 8 et téléchargeable pour les versions plus récentes de JDK) fournit une interface graphique pour surveiller le tas, le ramasse-miettes, le CPU et les fils d'exécution des processus JVM locaux et distants.

Se connecter à une JVM distante

Activez JMX sur le serveur pour vous connecter à JVisualVM à distance. Ajoutez ces indicateurs au démarrage de la JVM cible.

// Remote JVM flags:
java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9090 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.jmxremote.ssl=false \
     MyApp

Instantané du tas depuis JVisualVM

Dans JVisualVM, cliquez avec le bouton droit sur le processus → « Instantané du tas ». L'instantané affiche les objets vivants, les tailles conservées et les références. Utilisez la « Console OQL » pour interroger l'instantané avec une syntaxe semblable à SQL.

Analyser le CPU avec JVisualVM

Accédez à l'onglet d'analyse, puis cliquez sur « CPU ». JVisualVM instrumente les méthodes et affiche les piles d'appels les plus sollicitées. Arrêtez l'analyse pour voir quelles méthodes ont consommé le plus de temps.

Java Flight Recorder ou JVisualVM

JFR a une surcharge plus faible (environ 1 à 2 %) et convient à la production. JVisualVM avec l'analyse active a une surcharge plus importante et convient mieux au développement. Utilisez JFR en production et JVisualVM pour le débogage en développement.

Vérification rapide

Quel indicateur définit la durée maximale de pause cible du ramasse-miettes pour G1 ?

Bilan

Définissez -Xms == -Xmx en production. Réglez -XX:MaxGCPauseMillis pour G1. Activez la journalisation du ramasse-miettes avec Xlog. Utilisez JVisualVM pour le débogage en développement et JFR pour l'analyse des performances en production.

Questions Fréquemment Posées

La leçon « Options de réglage du GC et profilage avec JVisualVM » est-elle gratuite ?

Oui — le texte complet de « Options de réglage du GC et profilage avec JVisualVM » 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 « Options de réglage du GC et profilage avec JVisualVM » ?

Définissez les options de taille du tas, activez la journalisation du GC et utilisez JVisualVM pour profiler l’utilisation du tas dans une application en fonctionnement. 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 4 sur 4.

Combien de temps prend la leçon « Options de réglage du GC et profilage avec JVisualVM » ?

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. Régions du tas de la JVM et cycle de vie des objets
  2. Algorithmes de GC : Serial, G1, ZGC, Shenandoah
  3. Détecter et corriger les fuites mémoire
  4. Options de réglage du GC et profilage avec JVisualVM
← Retour à Java Academy