Multithreading et gestion de la mémoire en Java
Java est un langage très répandu dans les entreprises pour réaliser des serveurs web ou effectuer des traitements lourds. Contrairement à d’autres langages comme le C++, un programme Java s’exécute au sein d’une machine virtuelle (la JVM) qui s’occupe automatiquement d’allouer et de libérer la mémoire.
Les problèmes de performance apparaissent quasi-systématiquement lorsqu’une application devient plus importante (en utilisateurs, en quantité de données, en taille de données, etc…). Lorsque ces problèmes arrivent, il faut se poser plusieurs questions :
- Quels sont les modules / classes / objets qui posent problème ?
- Mon code est-il optimal ?
- Y a-t-il des fuites de mémoire ?
- Y a-t-il de meilleurs moyens pour que les traitements soient plus rapides et efficaces ?
- Comment monitorer mes performances et trouver les problèmes ?
- Comment paramétrer ma JVM pour que ça marche mieux ?
- Comprendre le fonctionnement du garbage collector
- Calculer sa consommation mémoire
- Utiliser un profiler comme JVisualVM
- Analyser un threadDump
- Choisir son algorithme de garbage collector
- Paramétrer la JVM en fonction de mon application
- Utiliser les bonnes classes pour consommer moins de mémoire
- De nombreux conseils pour utiliser moins de mémoire
-
Connaissance du langage Java
Prochaine session
- A venir
Public
Développeurs, Architectes
Durée
2 journées (50% théorie, 50% pratique)
Format
Présentiel, Distanciel
Modules
2 modules
Détails.
Programme
1. Comprendre l’utilisation mémoire en Java
-
La JVM
- Les différentes zones de la mémoire Java
- Le fonctionnement du garbage collector
- La mémoire des types primitifs et d’un objetJava
- Outils pour monitorer la mémoire et détecter les problèmes
- ThreadDump et analyse
- Les différents algorithmes de garbage collector
- Les exceptions dues à des problèmes mémoires
2. Paramétrer la JVM et optimiser son code
- Les paramètres de la JVM pour :
- Choisir son algorithme de garbage collector
- Dimensionner la taille des zones mémoires
- Obtenir des informations
- Contourner les problèmes
- Coder une application Java performante :
- Choisir la bonne architecture applicative
- Multithreading : optimiser les traitements qui peuvent se faire en parallèle
- Les classes à éviter et celles à connaître
- Les bonnes pratiques pour utiliser moins de mémoire
En savoir plus
- Exercice en travaux dirigés
- Questions orales
- Attestation de formation remise
- Si en physique : salle de formation équipée (rétroprojecteur, tableau blanc…)
- Si en distanciel : réunion Teams
- Questionnaire post-formation