2012-12-06 1 views
14

Ich habe versucht, JConsole zu verwenden, um den von einem laufenden Prozess verwendeten Speicher zu analysieren, aber JConsole zeigt mir keine Prozesse an, obwohl ich absolut sicher bin, dass eine ausgeführt wird (zusätzlich sollte es angezeigt werden JConsole in der Prozessliste auch, aber es nicht).JConsole kann den Prozess nicht finden

Hat jemand eine Idee, warum es keine Prozesse zeigt?

Prost

Antwort

10

Ich habe das gleiche Problem. Aber wenn ich explizit die PID spezifiziere, wie in jconsole 1234, kann jconsole den Prozess analysieren.

+1

Können Sie weitere Details zur Vorgehensweise angeben? –

15

an der Eingabeaufforderung des Fensters, führen Sie Echo% TMP%, es gibt Ihnen Standard-Temp-Dir. Gehen Sie in dieses Verzeichnis und suchen Sie nach dem Verzeichnis hsperfdata_ wo ist Ihre Anmeldung? Dies ist das Verzeichnis zum Speichern Ihrer Prozess-ID. Jeder neue Prozess, den Sie erstellt haben, wie beispielsweise die Java-Anwendung, wird eine neue Datei haben, die durch die Prozess-ID benannt wird. Jconsole übernimmt die Prozess-IDs aus diesem Verzeichnis. Wenn Sie in diesem Verzeichnis keine Datei erstellen können, müssen Sie die Berechtigung zum Schreiben aktivieren. Danach starten Sie eine neue Java-Anwendung, um zu sehen, ob sich eine neue Prozess-ID-Datei im Verzeichnis befindet. Nach der Bestätigung starten Sie jconsole

+1

Wenn der Java-Prozess von Cygwin aus gestartet wird, hat er einen anderen TEMP-Ordner als erwartet - jconsole, gestartet vom Explorer, wird den Prozess dann nicht finden. – Kai

+0

Danke James! Das Bearbeiten der Berechtigungen funktionierte für mich! :) – baraka

1

Dies passiert, wenn der% TMP% -Wert für die überwachte JVM und das Überwachungstool (JConsole/JMC/Java Mission Control, vielleicht sogar VisualVM) unterschiedlich ist. Dies kann das Standard-Szenario mit Cygwin sein (zumindest in meinem Fall: Cygwin + Babun) Am einfachsten ist es, den Wert der TMP-Umgebungsvariable auf den von Windows verwendeten Standardwert zu setzen, zumindest im Rahmen der JVM-Shell.

2

In meinem Fall hat die Entfernung von hsperfdata_USERNAME Verzeichnis (in %TMP% Verzeichnis) und das Schließen aller JVMs geholfen.

0

Sie müssen jconsole mit demselben Benutzer starten wie der Prozess, mit dem Sie analysieren möchten.

+0

Selbst wenn ich vom selben Benutzer renne, kann ich jconsole nicht ausführen. –

0

Wenn Sie jconsole auf Windows laufen - einfach:

  1. Finden jconsole.exe
  2. Rechtsklick es
  3. Select Als Administrator ausführen.