Wie kann ich eine Verbindung zu einem Java-Kommandozeilen-tool mit dem YourKit Java Profiler?
Ich haben ein command-line-tool in Java, die würde ich jetzt gerne Profil mit YourKit. Ich starte die command-line tool, mit so etwas wie:
$ java -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3
Läuft es bis zur Fertigstellung in weniger als 2 Sekunden.
Nach der Lektüre http://www.yourkit.com/docs/80/help/agent.jsp, ich habe versucht, die folgenden:
$ java -agentpath:/home/dspitzer/yjp-8.0.24/bin/linux-x86-32/libyjpagent.so -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3
...und ich bekomme:
[YourKit Java Profiler 8.0.24] JVMTI version 3001016d; 14.3-b01; Sun Microsystems Inc.; mixed mode, sharing; Linux; 32-bit JVM
[YourKit Java Profiler 8.0.24] Profiler agent is listening on port 10001...
[YourKit Java Profiler 8.0.24] *** HINT ***: To get profiling results, connect to the application from the profiler UI
...
(Und dann das Werkzeug zum Abschluss ausgeführt und beendet wird.)
Ich denke (standardmäßig zumindest) YourKit ist entworfen, um nur mit der Laufenden Anwendung.
Wie sollte ich ändern, mein Befehl-Linie Werkzeug, so lassen Sie die Verbindung von YourKit?
- Ich konnte fügen Sie eine command-line-option
wird es eine pause für die Eingabe,
und ich werde mich nicht drücken Rücksendung
weiter, bis ich angeschlossen habe, um es
von YourKit. - Gibt es eine YourKit-API, die könnte ich
hinzufügen zu mein Werkzeug dazu führen würde, dass es
zu blockieren, bis ich verbunden habe mit
YourKit? - Gibt es eine YourKit oder eine java-API
command-line-option, die würde
erstellen Sie ein profiling "Momentaufnahme", die ich
laden konnte und später analysieren (nach
das Kommandozeilen-tool (abgeschlossen)
mit YourKit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit zum anhalten profilierten Anwendung bis profiler
"verbindet"; Sie einfach nicht brauchen, dies zu tun.
Statt, tun Sie bitte Folgendes:
Biegen Sie auf die gewünschten Bewegungsprofile aus starten. Zum Beispiel, wenn Sie
müssen Profil CPU-Auslastung, start-CPU-sampling-oder CPU-tracing
mit entsprechenden Startoptionen "sampling" oder "tracing".
Sehen http://www.yourkit.com/docs/80/help/additional_agent_options.jsp
Wenn profilierten Anwendung ist kurz-running, enable-snapshot-Erfassung auf
Ausfahrt mit "onexit=snapshot" - Start-option. Später öffnen eingefangen
Schnappschuss in der profiler-Benutzeroberfläche für die Analyse.
Ich bin mir nicht bewusst, eine YourKit Möglichkeit, dies zu tun (das ist nicht zu sagen, dass es nicht ein), aber es ist eine Java remote-debugging-option, dies zu tun.
Versuchen Sie das folgende in der Befehlszeile zusätzlich zu den YourKit-agent-Optionen:
Dadurch sollte die VM zu sperren, sobald es beginnt, warten für eine debugger-Verbindung auf port 8000. YourKit selbst ist kein debugger, sondern eine IDE wie Eclipse oder Netbean die Arbeit machen werden, als die grundlegenden jdb Befehlszeile.
So führen Sie den Befehl, mit den beiden Optionen gesetzt, verbinden, YourKit, dann mit einem debugger zu verbinden, um die debug-port, die Auslöser der VM fortsetzen, so dass YourKit, um die Daten, die Sie brauchen.
Wäre es besser, dies zu tun, alle mit YourKit, aber ich kenne keine solche Möglichkeit.
jdb -attach 8000
zu verbinden, um die debug-port, und klicken Sie dann auf "run" (innerhalb jdb) zum auslösen der VM fortsetzen.Könnten Sie starten es über Eclipse, die eine YourKit-plugin, startet am app-Start.
YourKit ' s onexit=option snapshot speichert ein snapshot-Datei unter $HOME/Snapshots auf der JVM zu beenden. Laden Sie diese Momentaufnahme in der YourKit GUI für die spätere Analyse.
Sehen auf dieser Seite auf Ihre website für weitere details.
Die Antwort auf #3 ist ja, es gibt eine API, die Sie verwenden können, um Ihre Anwendung zu produzieren profiling-Ergebnisse, YourKit kann dann untersuchen.
Werfen Sie einen Blick auf die API-docs, und auch die Kommandozeilen-tool zur Steuerung profiling
Hier ist ein Beispiel für die Verwendung der API (ich habe nicht versucht, diese code):
java -jar <Profiler Installation Directory>/lib/yjp-controller-api-redist.jar
?