Méthodologie et outils pour l'optimisation
- Les éléments impliqués dans l'optimisation.
- Les éléments de la méthodologie.
- Outils de profilage, de tests et d'aide.
Travaux pratiques
Utilisation d’un outil de profilage (VisualVM ou JFR) et d’un outil de tests unitaires (JUnit).
L'optimisation et le langage
- Les différents modes d’exécution et de compilation.
- Les types, les instructions, les méthodes.
- La manipulation des chaînes de caractères.
Travaux pratiques
Amélioration des performances de l'application témoin.
L'optimisation et la gestion de la mémoire
- La gestion des objets (la création, la copie).
- Le choix des GC (les algorithmes, le paramétrage, la visualisation de l’activité).
- La saturation mémoire (les causes, le diagnostic, les solutions).
Travaux pratiques
Amélioration des performances de l'application témoin par une meilleure gestion des objets. Utilisation d'outils de visualisation de la mémoire (VisualVM, MAT), de l'activité du GC (Visual GC).
L'optimisation et les librairies standards
Travaux pratiques
Amélioration des performances de l'application témoin par une meilleure manipulation des strings et des collections.
L'optimisation et les I/O
- La librairie nio. Les buffers, channels. Les sélecteurs et leur utilisation.
- Le choix des bonnes classes de stream.
- L'optimisation de la sérialisation.
- L'optimisation spécifique aux IO réseaux.
Travaux pratiques
Amélioration des performances de l'application témoin par une meilleure gestion des IO.
L'optimisation et le multithreading
- Le multithread en Java (les principaux concepts, les différents packages).
- Le parallélisme versus la concurrence : leur impact sur les performances.
- Quelques solutions d’optimisation.
Travaux pratiques
Amélioration des performances de l'application témoin par l’introduction de threads.