Détails :
Durée :
3 Jours
Prérequis :
Public :
Objectifs :
Au terme de cette formation, vous serez en mesure de :
- Comprendre les principes de fonctionnement d'une JVM
- Savoir développer et démarrer un agent JVMTI
- Appliquer des "Guide Lines" de programmation pour optimiser les performances
- Optimiser l'accès à vos bases de données
- Recycler les ressources de la JVM et optimiser les applications multithreadées
- Comprendre le fonctionnement du Garbage Collector et ses évolutions
- Savoir utiliser des outils graphiques de monitoring et de profiling Java
Demande de devis :
Devis :
Si vous souhaitez être contacté et obtenir plus d'informations sur cette formation
veuillez remplir notre formulaire de mise en relation.
Cursus de formation :
Programme détaillé de la formation :
- L'environnement Java SE (Java Standard Edition)
- Concepts fondamentaux : ClassLoader, JIT, GC, Gestionnaire d'exceptions, ...
- JVMTI (Java Virtual Machine Tools Interface)
- Quelques outils du J2SE : javap, ...
- Notion de byte code
- Utilisation du désassembleur javap
- Notions de pile et de tas (Stack et Heap)
- Mécanisme de déclarations : variables locales et attributs
- Appels de méthodes en assembleur
- Quelques considérations sur les performances
- Temps d'exécution VS taille de l'exécutable
- Génie logiciel VS Performances
- Concepts fondamentaux de JVMTI
- Les différentes versions de l'interface JVMTI
- Les évènements JVMTI
- Codage d'agents JVMTI
- Traquer l'activité du ClassLoader
- Traquer l'activité en termes d'allocations dynamiques
- Traquer l'activité en termes d'appels de méthodes
- Evitons de refaire les choses
- Utiliser correctement les Loggers (Log4J, ...)
- Fonctionnement de l'instruction switch
- Limitation d'instances temporaires
- Utiliser de manière efficace les chaînes de caractères
- StringBuilder vs StringBuffer
- Internalisation des chaînes de caractères
- Utilisation des collections Java
- Choisir les bons algorithmes face aux besoins
- Collections synchronisées ou non (Vector vs ArrayList, ...)
- Les différentes techniques de parcours d'une collection
- Problématiques de l'autoboxing et du unboxing
- Utilisation de tableaux Java
- Accès indexés aux valeurs
- Traitements des valeurs de types primitifs
- Utilisation de classes et méthodes finales
- Utilisation de PreparedStatement
- Utilisation de batchs
- Optimisation des requêtes SQL
- Utilisation de caches
- Utilisation de pools de connexions
- Utilisation d'un pool d'instances
- Implémentation d'un pool d'instances
- Utilisation d'un pool d'instances
- Etude du comportement du GC via un agent JVMTI
- Applications multi-threadées
- Monitoring via JVMTI sur l'utilisation des threads
- Le package java.util.concurrent
- Utilisation de pool de threads
- Gestion de la synchronisation de vos threads
- SoftReferences et WeakReferences
- Aspects fondamentaux
- Tâches du garbage collector : libération et défragmentation
- Les différents stratégies utilisés (Mark & Sweep, Stop & Copy, ...)
- Fonctionnement du Garbage Collector de la JVM Hotspot (Oracle)
- Paramétrage du Garbage Collector (-Xmx, -Xms, -XX:NewRatio, -XX:SurvivorRatio, ...)
- Monitorer l'activité du GC au travers des logs du GC
- Collectes mineures et collectes majeures
- Les différents implémentations de Garbage Collectors dans Hotspot
- G1 (Garbage First)
- ZGC (Z Garbage Collector) et Shenandoah
- Les implémentations plus anciennes : Serial, Parallel, CMS
- Comparaison Hotspot/OpenJ9
- La JConsole
- Présentation du modèle JMX (Java Monitoring eXtensions)
- Lancement et attachement de la JConsole
- Les différentes catégories d'informations collectées
- Visual GC et GC Viewer
- Les différences entre les deux outils
- Analyses poussées de l'activité du GC
- Java VisualVM
- Présentation de l'outil
- Profilling de type CPU
- Profilling de type Memory
- Autres outils de profilage
- Utilisation de JFR (Java Flight Recorder) et de JMC (Java Mission Control)
- Utilisation du plugin Eclipse Memory Analyser Tool
- JProfiler
Quelques rappels fondamentaux
Développement d'agents JVMTI
"Guide lines" de programmation
Accès performants à vos bases de données
Recyclons les ressources de la JVM
Le Garbage collector (GC)
Outils graphiques de monitoring et de profiling