jvisualvm Liste nicht bestimmte Java-Prozesse
Möchte ich, um einen heap-dump (Verdacht auf memory leak) eine bestimmte Java-Prozess. Allerdings, wenn ich starten Sie das tool jvisualvm, ich kann nicht sehen, eine der Laufenden Java-Prozesse.
Habe ich Google würde um über dies und haben bereits ein paar Artikel, die sagen, dass Sie haben, um das Java-Prozesse mit der gleichen JDK starten, das tool jvisualvm mit, damit es in der Lage sein, Sie zu sehen. Jedoch, soweit ich sehen kann, ist dies bereits der Fall. Ich mache alles vor Ort (ich habe den remote Zugriff auf die Maschine).
Ein paar Dinge zu beachten:
- Die Prozesse ausgeführt werden, die auf einem Firewall in Windows 2008 server
- Die Prozesse ausgeführt werden mit umbenannt Versionen des JDK
java.exe
ausführbare - Soweit ich sehen kann die Prozesse ausgeführt werden mit dem JDK 1.6.0_18
- Eine der Laufenden Prozesse startet eine RMI-registry
Warte ich auf eine virtualisierte Kopie von dem server, so kann ich Durcheinander, um mit ihm (dies ist ein Produktions-server). Aber in der Zwischenzeit; irgendwelche Ideen, warum ich nicht sehen kann jede der Prozesse in jvisualvm (oder jconsole für diese Angelegenheit)?
InformationsquelleAutor der Frage tmbrggmn | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, nachdem ich ein wenig Forschung, scheint es, dass Peter ' s Kommentar war richtig. Weil die JVM-Prozesse gestartet wurden, die von einem anderen Benutzer (Netzwerkdienst-Konto, da waren Sie gestartet wird, indem ein Windows-Dienst) Sie nicht zeigen, bis in jvisualvm.
Abhilfe
Da habe ich Zugang zu der Anwendung, die Konfiguration, die ich gefunden habe, die folgende Problemumgehung, die beinhaltet explizit zu aktivieren ungesicherten JMX für die Ziel-JVM:
Fügen Sie die folgenden JVM-Parameter:
-Dcom.sun.management.jmxremote.port=3333 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
Fügen Sie den remote-Prozess zu jvisualvm verwenden der JMX-durch klicken Sie auf Datei -> Hinzufügen JMX-Verbindung. Sie können eine Verbindung zu dem Prozeß mit der port 3333. Natürlich können Sie den port ändern, wenn Sie wollen.
Link zum Artikel zu erklären, dieses in ein wenig mehr detail: http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/jmx_connections.html
Notes
InformationsquelleAutor der Antwort tmbrggmn
Ist der einfachste Weg zu führen jvisualvm als administrator (win: "als administrator ausführen"). Das ist nicht ideal, aber funktioniert. Alle java-Prozesse sichtbar dann.
InformationsquelleAutor der Antwort Wooff