1
Méthodologie et outils pour l'optimisation
- Les principes, les stratégies d’optimisation.
- Les outils de profilage, de tests et d'aide.
- Les éléments impliqués dans l'optimisation.
Travaux pratiques
Utilisation d’un outil de profilage (VisualVM ou JFR) et d’un outil de tests unitaires (JUnit).
2
Les caches
- Le principe général des caches, les méthodes importantes.
- Les principales collections utilisées comme caches.
Travaux pratiques
L’amélioration des performances de l'application témoin par l’introduction de caches. Utilisation d’un outil de profilage (VisualVM ou JFR).
3
L'optimisation et la gestion de la mémoire
- La création, la copie d’objets, de tableaux (clone vs constructeurs de copie).
- Les objets non modifiables, les objets non mutables, les pools d’objets.
- Les différents GC (les algorithmes, le paramétrage, la visualisation de l’activité).
- Les dumps mémoire, la saturation mémoire (les causes, le diagnostic, les solutions).
- Les références faibles (soft, weak, phantom);
Travaux pratiques
L’amélioration des performances de l'application témoin par une meilleure gestion des objets. Utilisation d'un outil de visualisation de la mémoire (VisualVM) et de l'activité du GC (Visual GC).
4
L'optimisation et le multithread
- Le parallélisme versus la concurrence.
- Les principaux concepts : Runnable, Thread, Callable<T>, ExecutorService, …
- L’impact du parallélisme et de la concurrence sur les performances.
- Quelques solutions d’optimisation.
Travaux pratiques
L’amélioration des performances de l'application témoin par l’introduction de threads (la parallélisation et la gestion de la concurrence).
5
L'optimisation et le langage
- Les différents modes d’exécution et de compilation.
- L’utilisation optimale des types, des instructions, des méthodes.
- Les lambda-expressions, les streams, …
- La manipulation des chaînes de caractères.
Travaux pratiques
Amélioration des performances de l'application témoin.
6
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.
Travaux pratiques
Amélioration des performances de l'application témoin par une meilleure gestion des IO.