BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Sortie De JDK Mission Control 8

Sortie De JDK Mission Control 8

JDK Mission Control (JMC) est surtout connu comme la solution de tableau de bord utilisée pour analyser les données collectées par le JDK Flight Recorder (JFR), le framework intégré de profilage et de collecte d'événements du JDK. Des versions binaires pour JMC 8 sont désormais disponibles au téléchargement via AdoptOpenJDK et Oracle. JMC 8 offre plus d'informations sur les applications en introduisant par défaut de nouveaux graphiques et une analyse d'un heap dump.

Construit au-dessus de l'IDE Eclipse, JMC peut être installé en tant qu'application standlone ou en tant que plug-in Eclipse. JMC est le successeur de JRockit Mission Control, créé par Appeal Virtual Machines avant l'acquisition par Oracle en 2008. JMC est un outil de profilage et de diagnostic (de production) et peut également être utilisé comme bibliothèque pour l'analyse et le traitement de fichiers .jfr.

L'application JMC fournit une vue d'ensemble de tous les processus Java exécutés localement. Comme indiqué ci-dessous, un clic droit sur l'une des applications Java en cours d'exécution affiche les options disponibles dans le menu déroulant. La console JMX est utilisée pour surveiller en permanence un environnement, interagir avec les MBeans ou appeler des commandes de diagnostic de jcmd sur une machine distante. Flight Recording et Dump Heap peuvent être utilisés pour créer un enregistrement et un heap dump, respectivement, pour une analyse plus approfondie.

JFR est un outil en ligne de commande qui nécessitait auparavant d'acquérir une licence pour les environnements de production. Cependant, il est disponible gratuitement depuis OpenJDK 8u272. Les données résultantes sont stockées dans un fichier .jfr. Il est également possible de cliquer sur "Start Flight Recording" depuis l'application JMC. L'assistant Flight Recording affiche une liste des types d'enregistrement et des événements à collecter.

La principale caractéristique de JFR est qu'il peut être utilisé avec un faible overhead dans les environnements de production. Environ deux à quatre Mo de données sont stockées par minute pour environ 100 000 événements pendant l'enregistrement, y compris de nombreuses stack traces. L'overhead de JFR dépend des mesures sélectionnées. Avec les paramètres par défaut, il est inférieur à 2%.

JOverflow, un plugin optionnel qui offre une analyse avancée des heap dump, est désormais inclus par défaut dans JMC 8. Pour cette version, le plugin a été converti en Standard Widget Toolkit (SWT). JOverflow offre également des informations sur le heap Java et aide les développeurs à optimiser le heap. Pour commencer, créez et ouvrez un heap dump dans l'application JMC. Les fonctionnalités de JOverflow, telles que le Hierarchical Treemap, peuvent être utilisées pour améliorer l'utilisation du heap de l'application.

La vue Flame est améliorée et disponible avec la perspective standard comme illustré ci-dessous. Cette vue est utilisée pour afficher l'agrégat des stack traces pour les événements sélectionnés.

La nouveauté de JMC 8 est la vue Graph, un graphe orienté où chaque nœud contient une méthode individuelle.

L'image ci-dessus montre également les prédécesseurs et les successeurs de profilage de méthodes qui ont été supprimés dans JMC 7. Cependant, en raison de la demande des clients, ils sont réintroduits dans JMC 8.

La vue Graph n'est pas prise en charge sous Windows pour le moment. Avec les autres systèmes d'exploitation pris en charge, inspectez la sortie de la console JMC à la recherche de graphiques vides car il peut parfois être nécessaire d'installer WebKit. Sous Linux, par exemple, WebKit peut être installé comme suit :

apt install libwebkit2gtk-4.0-dev

JMC 8 marque la première version du JMC Agent. Avec l'agent, les événements JFR peuvent être ajoutés de manière déclarative à n'importe quelle base de code. L'agent utilise l'API JMX pour contrôler l'instrumentation. Les événements peuvent être utilisés pour capturer des éléments tels que des champs et des valeurs de paramètres.

La nouvelle Rules API 2.0 permet d'utiliser les résultats intermédiaires d'autres règles. JFR Writer est présenté comme un nouveau module principal. Il peut être utilisé à des fins de test en écrivant des événements dans les tampons Java.

Des domaines d'amélioration ont déjà été envisagés pour les futures versions de JMC. Un nouvel événement d'allocation est introduit dans le JDK 16. Dans certains cas, des événements d'allocation se produisent très souvent et ont un impact sur les performances. La nouvelle solution utilise des taux de production de données au lieu d'échantillonner à un moment précis pour réduire l'overhead.

Le graph visualizer présente également des problèmes de performances lorsqu'une quantité importante de données et de nœuds est affichée. Marcus Hirt a expliqué que ceux-ci seront améliorés sur la base d'articles liés à l'élagage des graphiques dans les réseaux bruyants.

Les Flame Graph et Graph Views fonctionnent sur la base de compteurs, ce qui fonctionne bien pour les cas de charge du processeur. Cependant, pour l'allocation, il est préférable d'utiliser la mémoire comme mesure. Ce problème sera résolu en ajoutant un sélecteur d'attribut pour les graphiques.

L'agent JMC, qui fait désormais partie de JMC, sera également utilisé pour de futures améliorations. L'un d'eux est la possibilité de cliquer avec le bouton droit de la souris sur une stack frame pour récupérer des informations plus détaillées.

Marcus Hirt, directeur de l'ingénierie chez Datadog et chef de projet pour le projet OpenJDK JMC, a rédigé plusieurs articles de blog et un tutoriel. Des informations plus détaillées sont également disponibles dans sa session JMC 8 and Beyond.

 

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT