• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 14/03/2022

Savez-vous résoudre des bugs ?

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Compétences évaluées

  • Réparer des bugs avec VisualVM, JConsole, et des techniques de log
  • Question 1

    Vous travaillez sur un jeu vidéo Block World écrit en Java et vous avez été appelé pour aider votre collègue à découvrir laquelle des 28 302 méthodes de cette application a soudainement ralenti son temps d’affichage. Laquelle des approches suivantes serait la meilleure à appliquer pour aider rapidement votre collègue ?

    • Identifier les méthodes qui sont lentes.

    • Reproduire le scénario lent dans le débugger et placer un point d'arrêt avant et après chaque méthode suspecte, en mesurant sa durée d'exécution. 

    • Examiner tous les commits ajoutés à la branche de production et effectuer une recherche binaire jusqu'à ce que vous trouviez le coupable.

    • Utiliser un outil de profilage tel que VisualVM pour établir le profil d'une exécution lente de votre programme et demander à VisualVM de vous montrer tous ses points chauds.

  • Question 2

    L'application magique pour estimer la taille des selles de dragon a encore ralenti !  Vous la profilez dans VisualVM et vous obtenez cette vue des points chauds de VisualVM :

    • La méthode la plus lente qui a ralenti cette application est la suivante :  com.openclassrooms.debugging.DragonSaddleSizeGuesser.main(String[])  . Elle a un temps total de 7 795 secondes !

    • com.openclassrooms.debugging.DragonSaddleSizeGuesser.main(String[])  est la première méthode appelée. Elle prend autant de temps que l'application pour s'exécuter mais n'est pas la méthode qui ralentit cette application.

    • com.openclassrooms.debugging.DragonSaddleSizeEstimator.calculateTheUltimateAnswer()  est la méthode qui ralentit cette application. Elle prend 2 294 + 7 785 ms du temps total de l'application !

    • com.openclassrooms.debugging.DragonSaddleSizeEstimator.enterAProgrammaticTrance()  prend 5 490 millisecondes au total. Cela représente 70,4 % du temps total de l'application. Ce serait un excellent candidat pour l'enquête.

  • Question 3

    Lesquelles des phrases suivantes décrivent l'objectif des extensions de gestion Java (JMX) ?

    Attention, plusieurs réponses sont possibles.
    • Elles sont utilisées pour rendre compte des coûts à la direction de votre entreprise.

    • Elles rendent vos applications Java extensibles à l'exécution grâce à un chargeur de classe dynamique spécial qui permet de charger à chaud les classes.

    • Elles constituent une norme pour le suivi des mesures et la communication d'informations provenant de l'exécution d'applications Java.

    • Elles constituent une norme permettant aux développeurs d'applications de fournir des terminaux de gestion d'applications spéciaux dans leurs logiciels, en créant des classes spéciales appelées MBeans.

    • Il s'agit d'une norme pour la gestion et la reconfiguration des applications Java en cours d'exécution.