55 votes

Total méthode de temps en Java VisualVM

En Java VisualVM, est-il possible d'afficher le nombre total méthode de temps, plutôt que de "temps"? (Ce dernier n'est pas particulièrement utile, puisqu'il ne dit rien au sujet de combien de temps les méthodes de réellement prendre pour fonctionner.)

Si non, est-il autonome gratuit Java profiler qui n'calculer le total de la méthode de temps?

53voto

Joseph Cottam Points 256

En regardant les données de trace dans un "aperçu" vous permet de voir le montant total ainsi que le temps.

Appuyez sur le bouton "snapshot" qui s'affiche sur le tableau des résultats. Cela va créer un nouvel onglet qui contient un "Arbre d'Appel" de la vue qui décompose l'auto vs temps total. Le "combiné" vue fournit également cette information, mais la divise l'espace de l'écran avec un "Hot Spots" de la vue qui est similaire à la norme de profilage de vue.

Les instantanés peuvent être créés à partir de série "Profiler" ou "Sampler" de données. Cependant, "Profiler" les instantanés ne peuvent être créés avant la fermeture de l'application, tandis que "Sampler" peuvent être créés à tout moment.

(Les informations ci-dessus est basé sur VisualVM 1.3.1)

7voto

J.B Points 1552

Il suffit de prendre un instantané de l'établissement des profils des résultats. Vous obtiendrez l'horloge murale de soi de temps.

1voto

Mike Dunlavey Points 25419

Il existe un moyen simple pour obtenir le temps total d'une routine comme un pour cent de l'horloge murale du temps d'exécution (plutôt que de millisecondes). Utilisez simplement les touches ctrl-break pour obtenir un tas de stackshots pendant que vous êtes en attente pour elle. La fraction contenant la routine est le % de temps qu'il faut. La précision dépend du nombre de coups que vous prenez. Si vous êtes simplement à la recherche pour où sont les problèmes, vous n'avez pas besoin de la précision de la mesure du temps. Voici une brève explication de la façon dont il fonctionne.

0voto

vsingh Points 1099

Je pense que vous voulez savoir de combien de temps chaque méthode d'exécution. Vous pouvez utiliser JETM pour surveiller le rendement. Ce serait vous donner le temps d'entrée, le temps de la sortie et une différence de temps pour chaque méthode. Vous trouverez la méthode qui prend combien de temps.

Si vous utilisez le Printemps, puis il devient facile d'intégrer JETM http://jetm.void.fm/howto/spring_2_x_integration.html

-1voto

JavaAssist est une bibliothèque de classes pour manipuler votre Java Byte Code sans toucher à la source. Prenons un exemple de mesure temps d'exécution d'une méthode.

public class Subject {
    /**
     * Timetaken for start & end of the method
     * 
     * @throws InterruptedException
     */
    public void method2() throws InterruptedException {
        // Some business logic :)
        Thread.sleep(2000);
    }
}

Pour mesurer le temps pris pour l'exécution d' subject.method2(), vous pouvez améliorer l' Subject.methods() par l'ajout de code de début et de fin de la méthode comme indiqué.

public class JavaAssist {
    public static void main(String[] args) {
        timeTaken();
    }

    public static void timeTaken() {
        try {
            ClassPool p = ClassPool.getDefault();
            CtClass cc = p.get("Subject");
            CtMethod meth2 = cc.getDeclaredMethod("method2");
            meth2.insertBefore("System.out.println(\" Start : \"+new java.util.Date());");
            meth2.insertAfter("System.out.println(\" End : \"+new java.util.Date());");
            // cc.writeFile(".");
            Class c = cc.toClass();
            Subject s = (Subject) c.newInstance();
            s.method2();
            cc.detach();
        } catch (Exception e) {
            // suppressed
        }
    }
}

Sortie: Début : Mercredi 26 Mai à 17:24:18 EDT 2010 Fin : Mercredi 26 Mai à 17:24:20 EDT 2010

Référence http://www.csg.is.titech.ac.jp/~chiba/javassist/tutoriel/tutorial.html#lu

http://www.csg.is.titech.ac.jp/~chiba/javassist/html/

Origine de Poste à partir de: http://www.senthilb.com/2010/05/javaassist-byte-code-enhancement.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X