Trouver la formation qui vous correspond.

Plus de 500 formations dans les domaines informatique, bureautique et développement professionnel
Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages
Filter by Categories
Actus
Financement
Formations

Ex. : ExcelWordPhotoshopJavaAgile

Centre de formation Informatique et Ressources Humaines

Trouver la formation qui vous correspond.

Plus de 500 formations dans les domaines informatique, bureautique et développement professionnel
Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages
Filter by Categories
Actus
Financement
Formations

Ex. : ExcelWordPhotoshopJavaAgile

Optimisations de code Java

THIL1031

3 jours (21 heures) – Initiation / Fondamentaux

3 jours (21 heures)
Initiation / Fondamentaux

Formation : Optimisations de code Java

Domaine : Informatique

Présentiel
Présentiel

Objectifs pédagogiques

  • A la suite de la formation le stagiaire sera apte à évaluer la consommation des ressources engendrées par une modélisation et par l’implémentation de cette dernière.
  • L’étude des mécanismes de bas niveaux de la JVM permettra de mieux ressentir les différents concepts présentés.
  • Des outils graphiques de monitoring et de profiling d’applications Java seront aussi présentés.
  • L’accent sera mis sur les nombreux travaux pratiques proposés.

Niveau requis

  • Afin de suivre ce cours, le stagiaire devra déjà connaître les bases du langage Java.

Dates de formations

  • Du 10 au 12 Juin 2020 à Toulouse

Programme de formation

3 jours (21 heures)

Initiation / Fondamentaux

Quelques rappels fondamentaux

  • L’environnement Java SE (Java Standard Edition)
  1.           Concepts fondamentaux : ClassLoader, JIT, GC, Gestionnaire d’exceptions, …
  2.           JVMTI (Java Virtual Machine Tools Interface)
  3.           Quelques outils du J2SE : javap, …
  • Notion de byte code
  1.           Utilisation du désassembleur javap
  2.           Notions de pile et de tas (Stack et Heap)
  3.           Mécanisme de déclarations : variables locales et attributs
  4.           Appels de méthodes en assembleur
  • Quelques considérations sur les performances
  1.           Temps d’exécution VS taille de l’exécutable
  2.           Génie logiciel VS Performances

Développement d’agents JVMTI

  • Concepts fondamentaux de JVMTI
  1.           Les différentes versions l’interface JVMTI
  2.           Les évènements JVMTI
  • Codage d’agents JVMTI
  1.           Traquer l’activité du ClassLoader
  2.           Traquer l’activité en termes d’allocations dynamiques
  3.           Traquer l’activité en termes d’appels de méthodes

« Guide lines » de programmation

  • Correctement utiliser les Logger (Log4J, …)
  • Fonctionnement de l’instruction switch
  • Limitation d’instances temporaires
  • Correctement utiliser les chaînes de caractères
  • Utilisation des collections Java
  1.           Choisir les bons algorithmes faces aux besoins
  2.           Collections synchronisées ou non (Vector vs ArrayList, …)
  3.           Les différentes techniques de parcours d’une collection
  4.           Problématiques de l’autoboxing et du unboxing
  • Utilisation de tableaux Java typés
  1.           Accès indexés aux valeurs
  2.           Traitements des valeurs de types primitifs
  • Encapsulation VS performance

Le garbage collector (GC)

  • Aspects fondamentaux
  1.           Tâches du garbage collector : libération et défragmentation
  2.           Les différents algorithmes utilisés
  • Fonctionnement du Garbage Collector de la JVM Hotspot (Oracle)
  1. Monitorer l’activité du GC
  2. Collectes mineures et collectes majeures
  • Comparaison Hotspot/OpenJ9
  • Paramétrage du Garbage Collector de la JVM HotSpot
  1.           Gestion de la taille des Heap (-Xmx, -Xms, -XX:NewRatio, -XX:SurvivorRatio, …)
  2.           Libération incrémentale des ressources
  • Les évolutions du GC au fil des versions de Java

Recyclons les ressources de la JVM

  • Utilisation d’un pool d’instances
  1.           Implémentation d’un pool d’instances
  2.           Utilisation d’un pool d’instances
  3.           Etude du comportement du GC via un agent JVMTI
  • Application multithreadées
  1.           Monitoring via JVMTI sur l’utilisation des threads
  2.           Le package <i>java.util.concurrent</i>
  3.           Utilisation de pool de threads
  4.           Gestion de la synchronisation de vos threads
  • SoftReferences et WeakReferences

Outils graphiques de monitoring et de profiling

  • La JConsole
  1.           Présentation du modèle JMX (Java Monitoring eXtensions)
  2.           Lancement et attachement de la JConsole
  3.           Les différentes catégories d’informations collectées
  • Visual GC et GC Viewer
  1.           Les différences entre les deux outils
  2.           Analyses poussées de l’activité du GC
  • Java VisualVM
  1.           Présentation de l’outil
  2.           Profilling de type CPU
  3.           Profilling de type Memory
  • Autres outils de profilage
  1.           Utilisation du plugin Eclipse Memory Analyser Tool
  2.           JProfiler

Qualité et certification

Rejoignez-nous