HPjmeter-comme outil graphique pour afficher -agentlib:hprof de profilage de sortie
Quels sont les outils disponibles pour afficher la sortie de l'intégré dans la JVM profiler? Par exemple, je commence mon JVM avec:
-agentlib:hprof=cpu=times,thread=y,cutoff=0,format=a,file=someFile.hprof.txt
Cela génère une sortie dans le hprof ("JAVA PROFIL 1.0.1") format.
J'ai eu du succès dans le passé à l'aide de HPjmeter pour afficher ces fichiers de sortie, d'une manière raisonnable. Cependant, pour quelque raison que ce soit les fichiers qui sont générés à l'aide de la version actuelle de la JVM de Sun ne parviennent pas à charger dans la version actuelle de HPjmeter:
java.lang.NullPointerException
at com.hp.jmeter.f.jb.a(Unknown Source)
at com.hp.jmeter.f.a.a(Unknown Source)
at com.hp.c.a.j.z.run(Unknown Source)
Exception in thread "HPeprofDataFileReaderThread" java.lang.AssertionError: null pointer exception from loader
at com.hp.jmeter.f.a.a(Unknown Source)
at com.hp.c.a.j.z.run(Unknown Source)
(Pourquoi seraient-ils obscurcir le pseudo-code d'un produit gratuit?!)
Deux questions se posent:
- Personne ne sait la cause de cette HPjmeter erreur? (MODIFIER: Oui-voir ci-dessous)
- Ce que d'autres outils existent pour lire hprof fichiers? Et pourquoi il n'y a aucun de Soleil (sont-ils)?
Je sais que le Eclipse TPTP et d'autres outils peuvent surveiller JVMTI de données à la volée, mais j'ai besoin d'une solution de processus de l'généré hprof fichiers après le fait depuis le déploiement de la machine ne dispose que d'un JRE (pas un JDK) intallé.
MODIFIER: très utile HPjmeter développeur a répondu à ma question sur un HP ITRC forum indiquant que heap=dump
doit être inclus dans le -agentlib
options temporairement jusqu'à ce qu'un bug dans HPjmeter est fixe. Cette information permet de HPjmeter viable à nouveau, mais je vais quand même laisser la question ouverte pour voir si quelqu'un connait d'autres outils.
MODIFIER: à partir de la version 4.0.00 de HPjmeter (disponible 05/2009) ce bogue a été corrigé.
OriginalL'auteur David Citron | 2009-04-01
Vous devez vous connecter pour publier un commentaire.
Votre Kit Java Profiler est capable de lire hprof instantanés (je ne suis pas sûr si c'est seulement pour le profilage de la mémoire ou du PROCESSEUR). Il n'est pas libre, mais est de loin le meilleur java profiler j'ai jamais utilisé. Il présente les résultats dans un langage clair, intuitif et fonctionne bien sur de grands ensembles de données. La documentation est également très bon.
OriginalL'auteur
Je ne suis pas 100% sûr que ça va marcher (ça va) et je ne suis pas sûr que ça va l'afficher dans le format que vous voulez... mais avez-vous pensé à la VisualVM?
Je crois qu'il va ouvrir le fichier résultant.
Malheureusement, je n'ai pas encore utilisé... juste le savoir. Avez-vous essayé d'utiliser Visual VM pour faire le profilage (mais il semble que vous voulez vraiment un offline viewer)?
Oui, il y a certainement une variété d'outils que je pourrais utiliser pour faire connaître localement, mais il serait agréable d'avoir quelque chose qui puisse afficher le hprof les fichiers hors connexion. HPJmeter est vraiment très proche, si seulement je pouvais le faire fonctionner. Je souhaite qu'ils distribués dans le code source.
visualvm semble se bloquer si vous ouvrez un
format=a
fichier mais fonctionne bien avecformat=b
, mais ne semble pas comprendrecpu=samples
OriginalL'auteur
J'ai été en utilisant Eclipse De La Mémoire De L'Analyseur pour analyser les différents problèmes de performance avec succès. Tout d'abord, installez l'outil comme décrit dans la page web du projet dans Eclipse.
Après cela, vous pouvez créer un fichier de vidage de connaître le pid de la jvm pour être analysés
Alors il suffit d'importer l' .hprof fichier dans eclipse. Il a quelques rapports automatiques qu'à l'essayer (pour moi, ils habituellement ne fonctionnent pas, de ce qui pourrait être les problèmes possibles.
Edit:
Répondre au commentaire: Vous avez raison, c'est plus comme une fuite finder pour Java. Pour les problèmes de performances, j'ai joué avec JRat pour les petits projets. Il montre le temps comsumed par méthode, le nombre de fois qu'une méthode est appelée, la hiérarchie des appels, etc. Le seul problème est que, autant que je sache, il ne prend pas en charge .hprof fichiers. Pour l'utiliser, yo besoin pour exécuter votre programme ajout d'une machine virtuelle argument
Cela va générer un répertoire avec le profil capturé par l'outil. Ensuite, exécutez
Et ouvrir la trace. Même été un outil simple, je pense que ça pourrait être utile.
OriginalL'auteur
Pour la visualisation et l'analyse de la sortie de
hprof=samples
ouhprof=cpu
j'ai utilisé PerfAnal avec de bons résultats. L'interface graphique est un peu spartiate, mais très utile.PerfAnal est en téléchargement gratuit (GPL, à l'origine, un exemple de projet dans le livre de Programmation Java sur Linux).
Voir cet article:
http://www.oracle.com/technetwork/articles/javase/perfanal-137231.html
pour plus d'informations et le téléchargement.
Normalement, vous pouvez simplement exécuter
Vous pouvez avoir besoin de jouer avec -Xmx pour les grandes hprof fichiers.
OriginalL'auteur