Kill -3 realmente encerra um processo Java? Ou apenas gerar um dump de thread?

Kill -3 realmente encerra um processo Java? Ou apenas gerar um dump de thread?

CentOS 5.9

Se eu executar kill -3 <java process pid>o que realmente acontece? Conformeeste artigo do chapéu vermelho, entendo que um Java Thread Dump foi gerado, mas o processo foi encerrado? Não parece ser baseado em meus testes:

[root@foobox ~]# kill -3 14559

[root@foobox ~]# service foo status
foo (pid 14559) is running...

Em outras palavras: eu poderia coletar um dump de thread dessa maneira sem impactar o serviço?

Responder1

Esperançosamente, kill -3não encerra o processo JVM.

Um dump de thread está impactando levemente o serviço durante a coleta de stacktrace, especialmente se milhares de threads estiverem em execução.

Observe que se o -Xrssinalizador for usado, a JVM não manipulará mais especificamente o SIGQUITsinal e então esse sinal provavelmente encerrará o processo, a menos que um manipulador alternativo esteja instalado em algum código nativo.

Responder2

https://superuser.com/questions/352147/what-does-kill-3-meanpode fornecer mais algumas informações.

Cabe ao processo determinar exatamente como ele reagirá quando receberSIGQUIT

Como esse sinal pode ser capturado, ignorado ou bloqueado pelo processo, ele pode não respeitar o kill. Se você quiser olhar ainda mais de perto, sugiro rastrear a pilha do PID straceenquanto o envia SIGQUITcom kill.

informação relacionada