Profil Gesamte Java-Programmausführung in VisualVM
In Java profiling, wie es scheint, alle (frei) Straßen heute führen die VisualVM-profiler enthalten mit JDK6. Es sieht aus wie ein feines Programm, und jeder wirbt Sie, wie Sie "anfügen an einen Laufenden Prozess" als ein wichtiges Merkmal. Das problem ist, dass zu sein scheint die einzige Möglichkeites auf einen lokalen Prozess. Ich möchte in der Lage sein, um start mein Programm im profiler, und verfolgen Sie Ihre gesamte Ausführung.
Habe ich versucht, mit der -Xrunjdwp
beschriebene option in wie Profil Start der Anwendung mit visualvmaber zwischen den beiden transport-Methoden (shared-memory und server), ist weder nützlich für mich. VisualVM nicht scheinen, um eine integration mit der ehemaligen, und VisualVM weigert sich, die Verbindung localhost
oder 127.0.0.1
so das letztere nicht gut. Ich habe auch versucht, das einfügen eines einfachen Lesen von System.in
in mein Programm einfügen einer pause in der Ausführung, aber in diesem Fall VisualVM blockiert, bis das Lesen abgeschlossen ist, und kann man nicht mit dem profiling beginnen, bis nach der Ausführung unter Weg. ich habe auch versucht, auf der Suche in das Eclipse-plugin aber die website ist voll von Toten links und den launcher einfach abstürzt mit einem (dieser kann nicht mehr genau).NullPointerException
wenn ich versuche, es zu benutzen
Kommen von C, aber dies scheint nicht wie eine besonders schwierige Aufgabe für mich. Ich bin einfach etwas fehlt oder ist das wirklich ein Unmögliches verlangen? Ich bin offen für alle Arten von Anregungen, einschließlich mit einem anderen (auch kostenlosen) profiler, und ich bin nicht abgeneigt die Befehlszeile.
InformationsquelleAutor der Frage kbolino | 2011-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erwägen Sie die Verwendung HPROF und öffnen der Daten-Datei mit einem tool wie HPjmeter - oder einfach nur Lesen der resultierende text-Datei in Ihrem bevorzugten editor.
InformationsquelleAutor der Antwort Amir Afghani
Der beste Weg, dieses problem zu lösen, ohne die Anwendung zu ändern, ist nicht zu verwenden, VisualVM an alle. So weit wie andere Kostenlose Optionen sind besorgt, Sie könnte verwenden Sie entweder Eclipse TPTP oder die Netbeans profileroder was auch immer kommt mit Ihrer IDE.
Wenn Sie Ihre Anwendung so modifizieren, auszusetzen, es ist Staat, während Sie setup-profiler in VisualVM, ist es durchaus möglich, dies zu tun, mit der VisualVM Eclipse-plugin. Ich bin mir nicht sicher, warum Sie immer die NullPointerException, da es scheint zu funktionieren auf meiner workstation. Sie müssen das plugin konfigurieren, indem Sie den Pfad zu der
jvisualvm
binäre und den Pfad des JDK; dies erfolgt durch den Besuch der VisualVM-Konfigurations-dialog in der Windows -> Einstellungen -> "Ausführen/Debug" - > Start -> VisualVM-Konfiguration (wie in der folgenden Abbildung).Müssen Sie auch konfigurieren Sie Ihre Anwendung starten, mit der VisualVM launcher anstatt des Standard-JDT-launcher.
Alle Anwendungs-Starts von Eclipse, wird nun dazu führen, VisualVM-tracking-das neue lokale JVM automatisch, vorausgesetzt, dass VisualVM ist bereits ausgeführt. Wenn Sie nicht über VisualVM läuft, dann das plugin starten und mit VisualVM, aber es wird auch weiterhin die Anwendung ausgeführt wird.
Herleitung aus dem vorherigen Satz, ist es offensichtlich, dass die Anwendung halt in der
main()
- Methode vor der Durchführung eine Verarbeitung ist sehr nützlich. Das ist aber nicht der Hauptgrund für die Aussetzung der Anwendung. Offenbar, VisualVM, oder seine Eclipse-plugin lässt sich nicht für den automatischen Start von CPU-oder Speicher-Profiler. Dies würde bedeuten, dass diese Profiler würde müssen manuell gestartet werden, dadurch dass die Notwendigkeit zur Aussetzung der Anwendung.Darüber hinaus ist es erwähnenswert, dass das hinzufügen der flags:
-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y
der JVM beim Start wird nicht helfen, Sie im Falle von VisualVM, zur Aussetzung der Anwendung und setup von der CD. Die Fahnen sollen Ihnen helfen, im Falle von profilern, kann tatsächlich eine Verbindung zum port öffnen der JVM, mit dem JDWP-Protokoll. VisualVM nicht verwenden dieses Protokoll, und deshalb würden Sie die Verbindung zur Anwendung mittels JDB oder einem remote-debugger; aber das würde nicht das problem lösen, verbunden mit der profiler-Konfiguration, wie VisualVM (zumindest in Java 6 update 26) nicht zulässt, dass Sie zum konfigurieren des profilers auf einen angehaltenen Prozess, da es einfach nicht angezeigt, die Registerkarte "Profiler".InformationsquelleAutor der Antwort Vineet Reynolds
Den Rat mit
-Xrunjdwp
ist falsch. Es ermöglicht lediglich einen debugger und mitsuspend=y
wartet Sie auf debugger anfügen. Da VisualVM ist kein debugger, die es Ihnen nicht helfen. Allerdings einfügenSystem.in
oderThread.sleep()
pause den Start und ermöglicht VisualVM, die Sie an Ihre Anwendung. Lesen Sie Profiling mit VisualVM 1 und Profiling mit VisualVM 2 besser zu verstehen profiler-Einstellungen. Beachten Sie auch, dass anstelle von profiling, die Sie verwenden können, 'Sampler' - tab in VisualVM, welche ist besser geeignet für die Profilerstellung gesamte java-Programm Ausführung. Wie andere erwähnt, Sie können auch NetBeans Profiler, die direkt-support-profiling der Anwendung starten.InformationsquelleAutor der Antwort Tomas Hurka
Dies ist jetzt möglich mit der startup-profiler-plugin zu VisualVM.
InformationsquelleAutor der Antwort Alexander Torstling