it-swarm-pt.tech

Sabendo qual processo Java.exe será morto em uma máquina Windows

Quando um aplicativo com base em Java começa a se comportar mal em uma máquina Windows, você deseja eliminar o processo no gerenciador de tarefas, se não puder sair do aplicativo normalmente. Na maioria das vezes, há mais de um aplicativo baseado em Java em execução na minha máquina. Existe uma maneira melhor do que matar aleatoriamente processos Java.exe aleatoriamente, na esperança de que você atinja o aplicativo correto eventualmente?

EDIT: Obrigado a todas as pessoas que me indicaram o Process Explorer da Sysinternal - exatamente o que estou procurando!

46
Peter

Faça o download Process Explorer da Sysinternal . É um gerenciador de tarefas muito mais poderoso que o próprio gerenciador do Windows.

Uma de suas características é que você pode ver todos os recursos que cada processo está usando (como chaves de registro, diretórios de disco rígido, pipes nomeados etc.). Portanto, navegar nos recursos que cada processo Java.exe contém pode ajudá-lo a determinar qual você deseja matar. Geralmente descubro procurando aquele que está usando um determinado diretório de arquivos de log.

33
Ricardo Reyes

Corre jps -lv que mostra PIDs e linhas de comando de todos os processos em execução Java processos.

Determine o PID da tarefa que você deseja matar. Então use o comando:

taskkill /PID <pid>

para matar o processo de mau comportamento.

54
Misha

Se você não pode executar um aplicativo GUI como o ProcessExplorer e procura os argumentos "Linha de Comando" dos processos, pode usar "wmic" através da linha de comando. Por exemplo:

wmic PROCESS get Processid,Caption,Commandline

Se você deseja procurar um processo específico, pode fazer o seguinte:

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

A saída disso mostrará todos os argumentos da linha de comando de processos como "Java".

31
Jesse

O uso de jps no JDK fornecerá mais informações. Mais informações são exibidas com as opções -m, -l e -v.

7
Tom Hawtin - tackline

Se você estiver usando Java 6, tente jvisualvm] no diretório bin do JDK.

6
Bill Michell

Você já tentou usar o Process Explorer da SysInternals? Dá uma idéia muito melhor do que está sendo executado dentro do processo. Disponível gratuitamente on-line aqui: http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx

6
Raithlin

Você pode tentar abrir o Windows Task Manager, indo para a guia Aplicativos, clicando com o botão direito do mouse no aplicativo e selecionando "Ir para o processo". Isso destacará automaticamente o processo apropriado na guia Processos.

4
snafu109

Caso esteja desenvolvendo software: use um iniciador de Java. Usei para algumas das minhas aplicações [Exe4j] [ http://www.ej-technologies.com/products/exe4j/overview.html] e funcionou muito bem. Quando o aplicativo é iniciado, ele é listado como, por exemplo, "myserverapp.exe" ou "myapp" no gerenciador de tarefas do Windows. Também existem outros lauchers (não os conhecem de cor), alguns deles também podem ser de graça.

2
twistedmind

Em vez de usar uma ferramenta de terceiros, você também pode adivinhar bastante todas as colunas do gerenciador de tarefas, se souber aproximadamente quais são os vários processos Java em seu sistema. Na guia Processos, use Exibir-> Selecionar colunas e adicione PID, Tempo de CPU, VM Tamanho e Contagem de threads. Saber aproximadamente o que o processo está fazendo deve ajudar a reduzi-lo.

Por exemplo, em um aplicativo cliente-servidor, o servidor provavelmente usará mais memória, terá mais encadeamentos e terá usado mais tempo de CPU porque está em execução há mais tempo. Se você está matando um processo porque está travado, ele pode simplesmente está usando mais CPU no momento.

MAX Java geralmente é refletida diretamente em VM Tamanho. Portanto, se você estiver usando sinalizadores -Xmx, o processo com a configuração maior terá um valor maior) VM Tamanho.

1
TREE

Se o aplicativo não estiver respondendo, o Process Explorer é uma boa opção.

Se estiver meio que respondendo, mas não morrendo, às vezes, abrir o gerenciador de tarefas e depois mover outra caixa de diálogo sobre o processo Java lhe dará uma pista. O Java = processo que está consumindo ciclos de CPU para redesenhar é o que você está procurando.

1
Mikezx6r

Sugiro que baixe o Process Explorer da Sysinternals e analise os diferentes processos Java.exe mais de perto, para que você possa ter uma idéia melhor de qual deles matar.

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

É muito intuitivo e você pode encontrar os processos Java.exe e clicar com o botão direito do mouse e ir para suas propriedades, a partir daí você pode ver sua linha de comando, hora da criação, etc., o que pode ajudá-lo a encontrar o processo que deseja matar.

Espero que ajude.

1
Henry B

Usar ProcessExplorer e passar o mouse sobre o processo Java mostrará a linha de comando.

1
user6837