web-dev-qa-db-fra.com

Savoir quel processus Java.exe tuer sur une machine Windows

Lorsqu'une application basée sur Java commence à mal se comporter sur une machine Windows, vous voulez pouvoir tuer le processus dans le gestionnaire de tâches si vous ne pouvez pas quitter l'application normalement. La plupart du temps, il y a plus d'une Java exécutée sur ma machine. Y a-t-il une meilleure façon que de simplement tuer aléatoirement des processus Java.exe dans l'espoir que vous arriverez finalement à la bonne application?

EDIT: Merci à toutes les personnes qui m'ont dirigé vers Process Explorer de Sysinternal - Exactement ce que je recherche!

46
Peter

Télécharger Explorateur de processus de Sysinternal . C'est un gestionnaire de tâches beaucoup plus puissant que le propre gestionnaire de Windows.

L'une de ses fonctionnalités est que vous pouvez voir toutes les ressources que chaque processus utilise (comme les clés de registre, les répertoires de disque dur, les canaux nommés, etc.). Ainsi, parcourir les ressources détenues par chaque processus Java.exe peut vous aider à déterminer celle que vous souhaitez tuer. Je le découvre généralement en recherchant celui qui utilise un certain répertoire de fichiers journaux.

33
Ricardo Reyes

Courir jps -lv qui montre les PID et les lignes de commande de tous les processus Java Java.

Déterminez le PID de la tâche que vous souhaitez tuer. Utilisez ensuite la commande:

taskkill /PID <pid>

pour tuer le processus de mauvaise conduite.

54
Misha

Si vous ne pouvez pas exécuter une application graphique comme ProcessExplorer et que vous recherchez les arguments "Ligne de commande" des processus, vous pouvez utiliser "wmic" via la ligne de commande. Par exemple:

wmic PROCESS get Processid,Caption,Commandline

Si vous souhaitez rechercher un processus spécifique, vous pouvez le faire:

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

La sortie de cela vous montrera tous les arguments de ligne de commande de processus comme "Java".

31
Jesse

L'utilisation de jps dans le JDK vous donnera plus d'informations. Plus d'informations sont affichées avec les options -m, -l et -v.

7

Si vous utilisez Java 6, essayez jvisualvm depuis le répertoire bin JDK.

6
Bill Michell

Avez-vous essayé d'utiliser Process Explorer de SysInternals? Cela donne une bien meilleure idée de ce qui se déroule dans le processus. Disponible gratuitement en ligne ici: http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx

6
Raithlin

Vous pouvez essayer d'ouvrir le Gestionnaire des tâches de Windows, aller dans l'onglet Applications, cliquer avec le bouton droit sur l'application, puis sélectionner "Aller au processus". Cela mettra automatiquement en surbrillance le processus approprié dans l'onglet Processus.

4
snafu109

Si vous développez un logiciel: utilisez un lanceur Java. J'ai utilisé pour quelques-unes de mes applications [Exe4j] [ http://www.ej-technologies.com/products/exe4j/overview.html] et cela a très bien fonctionné. Lorsque l'application est lancée, elle est répertoriée comme par exemple "myserverapp.exe" ou "myapp" dans le gestionnaire de tâches Windows. Il y a aussi d'autres lanceurs (je ne les connais pas par cœur), peu d'entre eux pourraient aussi être gratuits.

2
twistedmind

Plutôt que d'utiliser un outil tiers, vous pouvez également faire une bonne estimation en consultant toutes les colonnes du gestionnaire de tâches si vous savez à peu près quels sont les différents processus Java Java sur votre système. Dans l'onglet Processus, utilisez Affichage-> Sélectionner les colonnes et ajoutez le PID, le temps CPU, VM Taille et nombre de threads. La connaissance approximative de ce que fait le processus devrait aider à le réduire.

Par exemple, dans une application client-serveur, le serveur utilisera probablement plus de mémoire, aura plus de threads et aura utilisé plus de temps CPU car il a fonctionné plus longtemps. Si vous tuez un processus parce qu'il est bloqué, il pourrait utiliser simplement plus de CPU en ce moment.

MAX Java est généralement directement reflétée dans la taille VM. Donc, si vous utilisez des indicateurs -Xmx, le processus avec le paramètre le plus grand aura un plus grand VM Taille.

1
TREE

Si l'application ne répond pas du tout, alors Process Explorer est une bonne option.

S'il répond en quelque sorte, mais ne meurt pas, en faisant parfois apparaître le gestionnaire de tâches, puis en déplaçant une autre boîte de dialogue sur le processus Java vous donnera un indice. Le Java = le processus qui prend des cycles de CPU à redessiner est celui que vous recherchez.

1
Mikezx6r

Je suggère de télécharger Process Explorer à partir de Sysinternals et de regarder de plus près les différents processus Java.exe, de cette façon, vous pouvez avoir une meilleure idée de celui à tuer.

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

C'est très intuitif et vous pouvez trouver les processus Java.exe et faire un clic droit et accéder à leurs propriétés, à partir de là, vous pouvez voir leur ligne de commande, l'heure de création, etc. qui peuvent vous aider à trouver le processus que vous voulez tuer.

J'espère que ça aide.

1
Henry B

Utiliser ProcessExplorer et survoler le processus Java affichera la ligne de commande.

1
user6837