Warum wird das VisualVM Profiler Profil nicht meine Anwendung?
Habe ich einen einfachen 1-Datei java-Anwendung, durchläuft eine Schleife, ruft einige Funktionen, weist einige Speicher, fügt einige zahlen, etc. Ich habe ausgeführt, dass die Anwendung über eclipse ist Run As->Java Application
.
Die laufende Anwendung wird in Java VisualVM unter Local
.
Ich Doppelklick auf die Anwendung und gehen Sie auf die Registerkarte "Profiler".
Den Standard-Einstellungen sind:
Start profiling from classes: my.main.package.**
Do not profile classes: java.*, javax.*,
sun.*, sunw.*, com.sun.*
Ich auf CPU
. Die CPU
und Memory
Schaltflächen Grau dargestellt. Nichts passiert.
Den Status
sagt profiling inactive
.
Wenn meine Anwendung beendet wird die Status
sagt application terminated
.
Was mache ich hier falsch? Es sind noch ein paar Einstellungen muss ich anpassen? Muss ich eine VM-flag, wenn ich starten meiner Anwendung?
InformationsquelleAutor der Frage Luke | 2012-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die Frage bezieht sich auf die Anwendung in Eclipse gestartet, ist dies, weil JVisualVM erwartet, Daten zu finden, in der
java.io.tmpdir
- Verzeichnis (normalerweiseC:\Users\[your username]\AppData\Local\Temp\hsperfdata_[your username]
auf einem Windows-system).Ich übernehmen anstatt in der normalen Position, wo JPS, JVisualVM etc. so erwartet man es von Eclipse legt die Daten in einem eigenen temp-Ordner?
Wenn ja, versuchen Sie es aufrufen JVisualVM mit
jvisualvm -J-Djava.io.tmpdir=[Eclipse's temp directory]
ausdrücklich sagen, wo sich die Daten befinden.Wenn Sie nicht finden können, die
hsperfdata_$USER
Ordner, versuchen Sie, nur läuft Ihre Anwendung außerhalb von Eclipse in der üblichen Kommandozeile Java Weg.Beachten Sie auch, dass es ein Fehler war, Auswirkungen auf den temp-Ordner (groß-und Kleinschreibung) eingeführt, um 1.6.0_23, vielleicht würden Sie davon profitieren, durch das aktualisieren auf eine neuere Java 6 (oder 7) zu bauen?
InformationsquelleAutor der Antwort Mikaveli
Ich hatte das gleiche Problem nach einem java 1.7.0_45-update. Ich hatte so löschen Sie die folgenden Ordner:
Nach tun, alles funktioniert wie ein Charme.
InformationsquelleAutor der Antwort Kuba
Ich hatte das gleiche Problem, aber mit den folgenden Symptomen:
Begann ich, jetty, mit der Arbeit directory in
C:\Users\t852124\AppData\Local\Temp
Steg war die Schaffung der hsperfdata_ Verzeichnis, aber nicht die Einstellung einer processID in es
So, als ich anfing, visualVM, es konnte keine java-Prozess info.
Ich löste dies durch starten von jetty mit der -Djava.io.tmpdir=C:/temp/java-option.
Nun, als ich anfing, jetty, die Prozess-ID angelegt wurde, als Datei im hsperfdata_-Verzeichnis.
Also, als ich anfing visualVM, es war in der Lage, um zu sehen, meine lokale java-Prozess
InformationsquelleAutor der Antwort Somaiah Kumbera
Mikaveli, Kuba und Somaiah Kumbera zur Verfügung gestellt haben tolle Lösungen. Nur das hinzufügen, was ich getan habe, um die Dinge funktionieren.
Ich zuerst überprüft, die Lage
C:\users\'username'\AppData\Local\Temp\hsperfdata_'username'
Es wurde keine Datei mit der Prozess-ID von meinem Programm ausgeführt wird, innerhalb von eclipse.
Ich habe einfach aufgehört, das Programm und fügte hinzu, die folgenden parameter an das Run-Konfigurationen des Programms ("Konfigurationen Ausführen" - > Argumente> VM-Argumente)
-Djava.io.tmpdir=C:\users\'username'\AppData\Local\Temp\hsperfdata_'username'
Ich startete das Programm erneut. Konnte immer noch nicht Profil. Aber jetzt habe ich eine Datei erstellt, die für den Prozess bei der angegebenen temp-Verzeichnis.
Dann ein einfacher Neustart von VisualVM hat den trick.
InformationsquelleAutor der Antwort isuru chathuranga
Unter Linux mit VisualVM 1.3.3 ich habe zu entfernen lokale Einstellungen der Anwendung in
~/.visualvm/1.3.3/
zum aktivieren der CPU-Profiler und CPU-Sampler.Beachten Sie auch, dass /usr/bin/jvisualvm enthält hartcodierten Pfad zu OpenJDK (set mit
jdkhome
variable), das scheint die Ursache für viele Probleme, im Vergleich zu laufen auf Oracle JDK 1.7.InformationsquelleAutor der Antwort divanov
Ich hatte das gleiche problem und läuft VisualVM mit erhöhten Privilegien (admin Rechte) das Problem gelöst.
InformationsquelleAutor der Antwort TomS
Beachten Sie auch, dass, wenn Ihre Anwendung eine der letzten nicht-Oracle-JVM, müssen Sie möglicherweise zum herunterladen der "bleeding edge" VisualVM von github.
Beispielsweise die VisualVM-Bundle mit JDK 1.8.0.111 scheint nicht zu funktionieren mit dem IBM-1.8 JVM. Möglicherweise ist die IBM JVM war einfach, das nach der Freigabe des Oracle-1.8 JVM, also einschließlich der notwendigen änderungen war nicht möglich zu dieser Zeit.
InformationsquelleAutor der Antwort Brad Mace