Conoscere quale processo java.exe uccidere su un computer Windows

Quando un’applicazione java inizia a comportarsi male su una macchina Windows, vuoi essere in grado di uccidere il processo nel task manager se non riesci ad uscire normalmente dall’applicazione. La maggior parte delle volte, ci sono più di un’applicazione basata su Java in esecuzione sulla mia macchina. C’è un modo migliore di uccidere casualmente i processi java.exe nella speranza che alla fine si raggiunga l’applicazione corretta?

EDIT: Grazie a tutte le persone che mi hanno indirizzato a Process Explorer di Sysinternal – Esattamente quello che sto cercando!

Scarica Sysinternal’s Process Explorer . È un task manager molto più potente del proprio gestore di Windows.

Una delle sue funzionalità è che è ansible visualizzare tutte le risorse utilizzate da ciascun processo (come chiavi di registro, directory del disco rigido, pipe denominate, ecc.). Quindi, sfogliando le risorse che ogni processo java.exe contiene potrebbe aiutarti a determinare quale dei due vuoi uccidere. Di solito lo scopro cercando quello che sta usando una certa directory di file di registro.

Esegui jps -lv che mostra i PID e le righe di comando di tutti i processi Java in esecuzione.

Determina il PID dell’attività che vuoi uccidere. Quindi usa il comando:

 taskkill /PID  

per uccidere il processo anomalo.

Se non è ansible eseguire un’applicazione GUI come ProcessExplorer e si stanno cercando gli argomenti “Riga di comando” dei processi, è ansible utilizzare “wmic” tramite la riga di comando. Per esempio:

 wmic PROCESS get Processid,Caption,Commandline 

Se vuoi cercare un processo specifico puoi farlo:

 wmic PROCESS where "name like '%java%'" get Processid,Caption,Commandline 

L’output di questo mostrerà tutti gli argomenti della riga di comando di processi come “java”.

L’utilizzo di jps nel JDK ti fornirà ulteriori informazioni. Ulteriori informazioni sono visualizzate con le opzioni -m, -l e -v.

Hai provato a utilizzare Process Explorer da SysInternals? Dà un’idea molto migliore di ciò che è in esecuzione all’interno del processo. Disponibile gratuitamente online qui: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Se stai usando Java 6, prova jvisualvm dalla directory bin JDK.

Potresti provare ad aprire il Task Manager di Windows, andare alla scheda Applicazioni, fare clic con il tasto destro del mouse sull’applicazione e quindi selezionare “Vai al processo”. Questo evidenzierà automaticamente il processo appropriato nella scheda Processi.

Nel caso si stia sviluppando un software: utilizzare un java-launcher. Ho usato per alcune delle mie applicazioni [Exe4j] [ http://www.ej-technologies.com/products/exe4j/overview.html%5D e ha funzionato molto bene. Quando l’applicazione viene avviata, viene elencata come ad esempio “myserverapp.exe” o “myapp” nel gestore di attività di Windows. Ci sono anche altri laucher (non li conoscono a memoria), alcuni di loro potrebbero anche essere gratuiti.

Suggerirei di scaricare Process Explorer da Sysinternals e osservare i diversi processi java.exe in modo più ravvicinato, in questo modo puoi avere un’idea migliore di quale uccidere.

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

È molto intuitivo e puoi trovare i processi java.exe e fare clic con il tasto destro del mouse e andare sulle loro proprietà, da lì puoi vedere la loro linea di comando, l’ora di creazione, ecc. Che può aiutarti a trovare il processo che vuoi uccidere.

Spero che sia d’aiuto.

Utilizzando ProcessExplorer e passando con il mouse sopra il processo Java mostrerà la riga di comando.

Se l’applicazione non risponde affatto, Process Explorer è una buona opzione.

Se è una sorta di risposta, ma non sta morendo, a volte facendo apparire il task manager, e poi spostando un’altra finestra di dialogo sul processo java, vi darà un indizio. Il processo java che sta riprendendo i cicli della cpu per ridisegnare è quello che stai cercando.

Anziché utilizzare uno strumento di terze parti, puoi anche fare una buona impressione guardando tutte le colonne nel task manager se sai approssimativamente quali sono i vari processi java sul tuo sistema. Dalla scheda Processi, utilizzare Visualizza-> Seleziona colonne e aggiungi PID, Tempo CPU, Dimensione VM e Conteggio thread. Sapere approssimativamente cosa sta facendo il processo dovrebbe aiutare a restringerlo.

Ad esempio, in un’app client-server, il server probabilmente utilizzerà più memoria, avrà più thread e ha utilizzato più tempo della CPU perché è stato più lungo. Se stai uccidendo un processo perché è bloccato, potrebbe semplicemente utilizzare più CPU in questo momento.

La memoria heap java MAX solitamente si riflette direttamente in VM Size. Quindi, se stai usando -Xmx flags, il processo con l’impostazione più grande avrà una dimensione VM più grande.