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

Inscription

Multithreading et gestion de la mémoire en Java