Ich habe gerade Java 1.6_07 installiert, damit ich versuchen konnte, mit VisualVM zu profilieren. Es sagt mir, dass meine App 60% ihrer Zeit in sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run
Wie finde ich heraus, was es in dieser Zeit gemacht hat? Wie viel Zeit war es, auf etwas zu warten, um es zu nennen oder etwas anderes zu tun? Was hat es gerufen und was hat es gerufen? Ich kann einfach keine Möglichkeit finden, tiefere Ebenen wie Quantify oder den Perl-Profiler zu durchforsten.
Ich habe keine Erfahrung mit VisualVM - aber JRockits Profiler liefert diese Informationen; Sie können es stattdessen verwenden.
Update: Eine Frage mit einer Liste von Java-Profilern kann gefunden werden hier , für Benutzer mit genügend Wiederholungen, um gelöschte Fragen anzuzeigen.
Verwendet Ihre App RMI über TCP? Wenn nicht, ist es möglich, dass es sich um einen Heisenbug handelt, verursacht durch die Instrumentierung der VM? Ich nehme an, VisualVM muss RMI-Aufrufe verwenden, um herauszufinden, was in der JVM vor sich geht ....
Ich habe begonnen, das neue VisualVM 1.2 zu verwenden. Es ermöglicht Profiling von CPU und Drilldown mit einem Call Graph. Probieren Sie es aus.
Unter 1.3.2 sehe ich auch, dass dies der gemeldete Hangup ist, den ich treffe. Wenn Sie in 1.3.2 einen Thread-Dump ausführen und nach diesem Anruf suchen, können Sie sehen, wo er in der Aufrufkette für diesen Thread landet. Nicht sicher, ob Yuval F sich auf dieses oder etwas anderes bezogen hat. Schauen Sie sich die Anrufkette an, um zu sehen, was sie anruft und so weiter, schauen Sie nach unten, um zu sehen, wie sie angerufen wird und so weiter.