Java Advanced II: Java haute performance - cours 67 500 RUB. du Centre de Formation IBS, formation 40 heures, Date 29 janvier 2024.
Miscellanea / / December 04, 2023
Pavel travaille chez Luxoft depuis 2005. Pendant cette période, il a participé à un certain nombre de projets pour de grandes entreprises russes et étrangères, telles que Boeing, la Poste russe, DHL, MVideo. Actuellement, il joue le rôle d'ingénieur logiciel principal dans un projet visant à soutenir la plus grande chaîne de vente au détail d'électronique et d'appareils électroménagers en Russie. L'intérêt principal de Pavel est de développer des applications Java évolutives et de fournir des solutions techniques pour améliorer les performances et la fiabilité des applications.
Sujets couverts:
Module 1. Examen du réglage des performances – 5 heures.
Pratiques générales ;
Stratégies d'optimisation des performances ;
Indicateurs de performance;
Comment améliorer la productivité ?
Outils de mesure des performances ;
JMètre ;
Tests de charge à l'aide de JMeter ;
Comment améliorer la productivité grâce à l’architecture ?
Meilleures pratiques pour améliorer les performances du code.
Devoirs – 2 heures.
Module 2. Algorithmes GC – 5 heures.
Utilisation de la mémoire des objets Java ;
Approches générales et algorithmes des garbage collectors ;
Récupérateur de déchets série GC ;
Récupérateur de place GC parallèle ;
Récupérateur de déchets CMS ;
Collecteur de déchets G1 ;
Éboueur de Shenandoah ;
Réglage des éboueurs ;
Outils de collecte et d'analyse des métriques de garbage collection ;
Choisir le ramasse-miettes optimal.
Module 3. Compilateur HotSpot JIT – 5 heures.
Compilation JIT ;
Bytecode Java ;
Compilation multicouche ;
Cache de code et son réglage ;
Optimisation du code ;
Désoptimisation du code et quand elle se produit ;
Outil JITWatch pour analyser les résultats de la compilation ;
Types d'optimisations ;
Optimisations spéculatives ;
Paramètres du compilateur ;
Compilation AOT.
Devoirs – 2 heures.
Module 4. Indicateurs JVM - 3 heures.
Objectif et catégories des indicateurs JVM ;
Drapeaux généraux ;
Drapeaux associés aux chaînes ;
Indicateurs de gestion de la mémoire ;
Points de sécurité et drapeaux qui leur sont associés ;
TLAB et drapeaux qui leur sont associés ;
Plan de réglage JVM.
Module 5. Test des performances des algorithmes (benchmarking) à l’aide de JMH – 2 heures.
Qu'est-ce que l'analyse comparative ?
Introduction à JMH;
API JMH ;
Exemples non triviaux ;
Application de JMH dans la pratique.
Devoirs – 2 heures.
Module 6. Utilisation de la mémoire en dehors du tas (mémoire hors tas) – 3 heures.
Qu'est-ce que sun.misc. Peu sûr;
Méthodes dangereuses ;
Performances de la mémoire native ;
Création de structures de données en mémoire native ;
Évaluation des performances de la mémoire native et comparaison avec la mémoire tas ;
API prometteuse d’accès à la mémoire étrangère.
Module 7. Sérialisation – 2 heures.
Sérialiseurs JSON (GSON, Jackson) ;
Sérialiseurs binaires (Protobuf, Jackson Smile, Kryo, FST, One NIO) ;
Comparaison des performances de différents sérialiseurs.
Module 8. Profilage Java – 4 heures.
Quand et comment faire du profilage ?
Profileurs d'échantillonnage et d'instrumentation ;
Utilisation de Java VisualVM pour le profilage ;
Profilage avec Spring AOP ;
Profilage avec IDEA et profileur asynchrone ;
Enregistreur de vol Java ;
Analyse des journaux de Java Flight Recorder à l'aide de Mission Conrol ;
Création et journalisation d'événements JFR personnalisés ;
Utiliser des agents Java pour intégrer du code et enregistrer tous les événements dans Java Flight Recorder ;
Programmes d'écriture pour l'analyse automatique des journaux JFR ;
Collecte et analyse des requêtes SQL à l'aide de JFR ;
Collecte et analyse des requêtes REST à l'aide de JFR.
Devoirs – 2 heures.
Module 9. Surveillance et analyse des données du tas. Fuites de mémoire – 2 heures.
Outils d'analyse de données en mémoire ;
Signes de fuites de mémoire ;
Les principales causes des fuites de mémoire ;
Recherchez et détectez les fuites de mémoire.
Module 10. GraalVM – 3 heures
Écosystème GraalVM ;
Exécution GraalVM ;
API polyglotte ;
Compilation et image native ;
Des repères.
Module 11. Mise en cache dans les applications Java - 3 heures.
Modèles de mise en cache ;
Comparaison des API de cache ;
Mise en cache des requêtes de base de données ;
Mise en cache des requêtes HTTP ;
Métriques de base et paramètres des bibliothèques de mise en cache ;
Comparaison des bibliothèques de mise en cache populaires ;
Mise en cache au niveau du service ;
Mise en cache des services Spring ;
Applications qui utilisent des caches de différents niveaux.
Module 12. Examen d'autres approches pour améliorer la productivité - 3 heures.
Programmation parallèle (pools de threads, threads parallèles, structure fork-join) ;
Programmation asynchrone ;
Programmation réactive (Reactor, VertX);
Optimisation du travail avec les bases de données ;
Cloud computing (microservices, Spring Cloud) ;
Repères et conclusions.