Guide sur les profileurs Java

Un guide pour les profileurs Java

1. Vue d'ensemble

Sometimes writing code that just runs is not enough. Nous pourrions vouloir savoir ce qui se passe en interne, par exemple comment la mémoire est allouée, les conséquences de l'utilisation d'une approche de codage par rapport à une autre, les implications des exécutions simultanées, les domaines pour améliorer les performances, etc. Nous pouvons utiliser des profileurs pour cela.

Un Java Profiler est un outil quemonitors Java bytecode constructs and operations at the JVM level. Ces constructions et opérations de code incluent la création d'objets, les exécutions itératives (y compris les appels récursifs), les exécutions de méthodes, les exécutions de threads et les nettoyages de mémoire.

Dans cet article, nous discuterons des principaux profileurs Java:JProfiler,YourKit,Java VisualVM et lesNetbeans Profiler.

2. JProfiler

JProfiler est un choix de premier choix pour de nombreux développeurs. Avec une interface utilisateur intuitive, JProfiler fournit des interfaces pour afficher les performances du système, l'utilisation de la mémoire, les fuites de mémoire potentielles et le profilage de threads.

Avec ces informations, nous pouvons facilement savoir ce dont nous avons besoin pour optimiser, éliminer ou modifier le système sous-jacent.

Voici à quoi ressemble l’interface de JProfiler:

Comme la plupart des profileurs, nous pouvons utiliser cet outil pour les applications locales et distantes. Cela signifie qu'il est possible deprofile Java applications running on remote machines without having to install anything on them.

JProfiler fournit égalementadvanced profiling for both SQL and NoSQL databases. Il fournit un support spécifique pour le profilage des bases de données JDBC, JPA / Hibernate, MongoDB, Casandra et HBase.

La capture d'écran ci-dessous montre l'interface de vérification JDBC avec une liste des connexions en cours:

Si nous souhaitons en savoir plus sur lescall tree of interactions with our database et voirconnections that may be leaked, JProfiler gère bien cela.

Live Memory est une fonctionnalité de JProfiler qui nous permet desee current memory usage by our application. Nous pouvons afficher l'utilisation de la mémoire pour les déclarations d'objet et les instances ou pour l'arborescence des appels complète.

Dans le cas de l’arbre d’appel d’allocation, nous pouvons choisir de visualiser l’arborescence des appels d’objets vivants, d’objets ramassés ou des deux. Nous pouvons également décider si cet arbre d'allocation doit être destiné à une classe ou à un package particulier ou à toutes les classes.

L'écran ci-dessous montre l'utilisation de la mémoire en direct par tous les objets avec un nombre d'instances:

JProfiler prend en charge lesintegration with popular IDEstels que Eclipse, NetBeans et IntelliJ. Il est même possible denavigate from snapshot to source code!

3. YourKit

YourKit Java Profiler fonctionne sur de nombreuses plates-formes différentes et fournit des installations distinctes pour chaque système d'exploitation pris en charge (Windows, MacOS, Linux, Solaris, FreeBSD, etc.).

Comme JProfiler, YourKit a des fonctionnalités de base pour visualiser les threads, les garbage collection, l'utilisation de la mémoire et les fuites de mémoire, avecsupport for local and remote profiling via ssh tunneling.

Voici un aperçu des résultats du profilage de la mémoire d'une application serveur Tomcat:

YourKit est également utile lorsque nous voulonsprofile thrown exceptions. Nous pouvons facilement savoir quels types d’exceptions ont été lancés et le nombre de fois que chaque exception s’est produite.

YourKit a unCPU profiling feature that allows focused profiling on certain areas of our code intéressant comme des méthodes ou des sous-arbres dans les threads. Ceci est très puissant car il permet un profilage conditionnel grâce à sa fonctionnalité de simulation.

La figure 5 montre un exemple d'interface de profilage de thread:

On peut aussiprofile SQL, and NoSQL database calls avec YourKit. Il fournit même une vue des requêtes réelles exécutées.

Bien que cela ne soit pas une considération technique, le modèle de licence permissif de YourKit en fait un bon choix pour les équipes multi-utilisateurs ou distribuées, ainsi que pour les achats avec une seule licence.

4. Java VisualVM

Java VisualVM est un outil de profilage simplifié mais robuste pour les applications Java. Par défaut, cet outil estbundled with the Java Development Kit (JDK). Son fonctionnement repose sur d'autres outils autonomes fournis dans le JDK, tels queJConsole,jstat,jstack,jinfo etjmap.

Ci-dessous, nous pouvons voir une interface de vue d'ensemble simple d'une session de profilage en cours utilisant Java VisualVM:

Un avantage intéressant de Java VisualVM est que nous pouvonsextend it to develop new functionalities as plugins. Nous pouvons ensuite ajouter ces plugins au centre de mise à jour intégré de Java VisualVM.

Java VisualVM prend en chargelocal and remote profiling, ainsi que le profilage de la mémoire et du processeur. Connecting to remote applications requires providing credentials (nom d'hôte / IP et mot de passe si nécessaire)but does not provide support for ssh tunneling. Nous pouvons également choisir d'activerreal-time profiling with instant updates (généralement toutes les 2 secondes).

Ci-dessous, nous pouvons voir les perspectives de mémoire d'une application Java profilée à l'aide de Java VisualVM:

 

Avec la fonction de capture instantanée de Java VisualVM, nous pouvonstake snapshots of profiling sessions for later analysis.

5. NetBeans Profiler

Le NetBeans Profiler estbundled with Oracle’s open source NetBeans IDE.

Bien que ce profileurshares a lot of similarities with Java VisualVM, c’est un bon choix lorsque nous voulons que tout soit enveloppé dans un seul programme (IDE + Profiler).

Tous les autres profileurs mentionnés ci-dessus fournissent des plugins pour améliorer l'intégration des IDE.

La capture d'écran ci-dessous montre un exemple de l'interface NetBeans Profiler:

Netbeans Profiler est également ungood choice for lightweight development and profiling. NetBeans Profiler fournit une fenêtre unique pour configurer et contrôler la session de profilage et afficher les résultats. Il donne une caractéristique unique de connaître leshow often garbage collection occurs.

6. Autres profileurs solides

Certaines mentions honorables ici sontJava Mission Control,New Relic etPrefix (deStackify) - elles ont globalement moins de part de marché, mais elles méritent certainement une mention. Par exemple, Stackify's Prefix est un excellent outil de profilage léger, bien adapté au profilage non seulement des applications Java, mais également d'autres applications Web.

7. Conclusion

Dans cet article, nous avons abordé le profilage et les profileurs Java. Nous avons examiné les caractéristiques de chaque profileur afin de déterminer le choix éventuel d’un système par rapport à un autre.

De nombreux profileurs Java sont disponibles, certains ayant des caractéristiques uniques. Le choix du profileur Java à utiliser, comme nous l'avons vu dans cet article, dépend principalement de la sélection des outils par le développeur, du niveau d'analyse requis et des fonctionnalités du profileur.