2012-12-06 11 views
14

Ho provato a eseguire JConsole per analizzare la memoria utilizzata da un processo in esecuzione, ma JConsole non mi mostra processi anche se sono assolutamente sicuro che uno è in esecuzione (oltre a ciò dovrebbe mostrare JConsole nella lista dei processi, ma non lo fa).JConsole non trova il processo

Qualcuno ha un'idea del motivo per cui non mostra alcun processo?

Cheers

risposta

10

Ho lo stesso problema. Ma se specifichi esplicitamente il PID, come in jconsole 1234, jconsole è in grado di analizzare il processo.

+1

Potete fornire maggiori dettagli su come farlo? –

15

al prompt della finestra, eseguire echo% TMP%, fornirà la directory temp predefinita. Vai a quella directory e trova la directory denominata hsperfdata_ dove si trova il tuo login. Questa è la directory per memorizzare il tuo ID di processo. Qualsiasi nuovo processo creato come l'applicazione java avrà un nuovo file nominato dall'id di processo. Jconsole raccoglierà gli ID di processo da questa directory. Se non è possibile creare un file in questa directory, ciò significa che è necessario modificare i permessi per consentire la scrittura. Fatto ciò, avvia una nuova applicazione java per vedere se il nuovo file id di processo si trova nella directory. Una volta confermato, avviare jconsole

+1

Se il processo java viene avviato da cygwin, avrà una cartella TEMP diversa dal previsto: jconsole, avviato da explorer, non troverà il processo. – Kai

+0

Grazie James! Correggere le autorizzazioni ha funzionato per me! :) – baraka

1

Ciò accade quando il valore% TMP% è diverso per JVM monitorata e lo strumento di monitoraggio (JConsole/JMC/Java Mission Control, forse anche VisualVM). Questo potrebbe essere lo scenario standard con Cygwin (almeno nel mio caso: Cygwin + Babun) La soluzione più semplice è impostare il valore della variabile di ambiente TMP sul valore predefinito utilizzato da Windows, almeno nell'ambito della shell che avvia la JVM.

2

Nel mio caso, la rimozione della directory hsperfdata_USERNAME (nella directory %TMP%) e la chiusura di tutte le JVM hanno aiutato.

0

È necessario avviare jconsole con lo stesso utente del processo da analizzare avviato.

+0

Anche io sono in esecuzione dallo stesso utente ancora non sono in grado di eseguire jconsole. –

0

Se si esegue jconsole sulle finestre - semplicemente:

  1. Trova jconsole.exe
  2. Fare clic destro si
  3. Selezionare Esegui come amministratore.