Introduction
L'optimisation de performance :
Méthodologie, recommandations, benchmarking, métriques observés
Concepts fondamentaux de Java :
JVM, Zones mémoires et GC, ClassLoader, Multi-threading, JIT, JVMTI, Outils de base
Les causes de mauvaises performances
CPU, mémoire, IO
Le ramasse miettes
Introduction
Pools de la HotSpot
Les différents algorithmes
Tuning du garbage collector
Atelier
Observation des collectes avec JProfiler, tuning des zones mémoire et de l’algorithme
Boites à outils
Introduction et complémentarité des outils
Outils systèmes
JMX et les Mxbeans de la JVM
Agents JVMTI, exemples
Outils fournis par la distribution
Commandes en ligne Java
jVisualVM et jmc
JProfiler
Distributions, Facilités proposés
Temps d’exécution : Enregistrements des appels, CPU profiling,
Mémoire : Utilisation, collectes
Multi-threading :
Serveurs back-ends, JavaEE
Atelier
Monitoring via des consoles JMX, Exemple d’un agent JVMTI
Ateliers avec les commandes en lignes
Utilisation de JProfiler pour différents cas de détection de mauvais fonctionnement
Optimisation de code Java
Généralités
Limitation d'instances temporaires, boucles et récursivité, les streams
Utilisation des chaînes de caractères, switch
Exceptions et stacktrace
Gestion des I/O, Bufferisation, le package java.nio, gestion des traces
Les collections et tableaux
Choisir les bonnes implémentations en fonction de l’algorithme
Collection synchronisées ou non
Coût des allocations/désallocations
Réutilisation d'instance
Pattern pool , singleton, ThreadLocal
Les Weak references
Applications multithreadées
Cas d'usage des threads, les problèmes de synchronisation, mécanismes de base
Le package java.util.concurrent
Utilisation de pool de threads
Java8 et l’asynchronisme
Reactive programming
Atelier
Optimisation d’application en utilisant les techniques présentées
Services Back-end
Particularités JavaEE et services back-end
Différents Pool de l’architecture, les caches, scalabité
Outils de simulation de charge
Intégration des serveurs JProfiler
Persistance et JPA
Pools de connexions
Optimisation du schéma
Caches
Métier
Modèle stateless/stateful
Transactions
Http et REST
Sérialisation/désérialisation
Optimisation des transferts
Ateliers
Diagnostic de problèmes sur une application web complète, sur une API Rest