JVM HotSpot​

présentation

La JVM (Java Virtual Machine) est une machine virtuelle logicielle qui exécute du code Java, compilés sous forme de bytecode Java, contenu dans les fichiers .class ou .jar, sur différentes plateformes sans le recompiler. Elle joue le rôle d’intermédiaire entre le bytecode Java produit par le compilateur Java et le système d’exploitation et le processeur.

La JVM HotSpot propose un moteur d’exécution incluant le chargement des classes (Class Loader) qui trouve et charge les fichiers .class. et le transforme en instructions compréhensibles par le processeur, soit par interprétation, soit via un compilateur JIT (Just‑In‑Time), la gestion des threads et la gestion de la mémoire grâce au ramasse‑miettes (Garbage Collector).

Le but de cours est acquérir une compréhension du fonctionnement et la configuration de la JVM HotSpot, de ses mécanismes d’exécution, de ses stratégies de gestion mémoire par les différents Garbage Collectors que cela soit pour une exécution on-premise ou dans des environnements conteneurisés où les ressources CPU/mémoire sont contraintes.

Des outils du JDK ou tiers de diagnostic et de monitoring pour superviser les applications (JMX, jcmd, jconsole, VisualVM, JFR) et capturer des métriques afin de  résoudre les problèmes de mémoire, de threads ou de GC sont présentés.

Modalité
Présentiel
Tarif

N/A

Durée
2 jours

CETTE FORMATION EST-ELLE FAITE POUR VOUS ?

Le programme

Introduction

Le rôle d’une JVM

La JVM HotSpot

La configuration d’une JVM

Les options de la JVM

Les modes d’exécution de la JVM Hotspot

Unified JVM logging

L'exécution d’applications

L’ exécution de code par la JVM

Les compilateurs JIT (Just In time)

Classpath et module path

Classpath et module path

La définition du classpath

Le Class Data Sharing (CDS)

Le module path

Les options pour assouplir les règles de JPMS

Classpath et module path

L’option--illegal-access

Le chargement des classes

Les outils en ligne de commandes du JDK

JConsole et JVisualVM / VisualVM

Les ergonomics

Les threads

La stacktrace

StackOverFlowError

Les threads dumps

Les deadlocks

L’organisation de la mémoire

Le heap

La Permanent Generation (Permgen) /Metaspace

La configuration de la taille de la mémoire

Les problèmes liés à la gestion de la mémoire

Les heap dumps

OutOfMemoryError

Les ramasse-miettes (Garbage Collectors ou GC)

Le tas (heap)des GC générationnel

Les facteurs qui différencient un GC

Les GC de la JVM HotSpot

Le choix du GC par les ergonomics

Le choix du ramasse-miettes à utiliser

Logguer l’activité du GC à la console

Le suivi de l’activité du GC avec VisualVM et jstat

Le Java/JDK Flight Recorder

JMX

La JVM dans un conteneur