kill -3 是否真的终止了一个 java 进程?或者只是生成一个线程转储?

Mik*_*e B 5 linux java centos pid

CentOS 5.9

如果我运行kill -3 <java process pid>实际会发生什么?根据这篇红帽文章,我知道生成了 Java 线程转储,但进程是否终止?它似乎不是基于我的测试:

[root@foobox ~]# kill -3 14559

[root@foobox ~]# service foo status
foo (pid 14559) is running...
Run Code Online (Sandbox Code Playgroud)

换句话说:我可以通过这种方式收集线程转储而不影响服务吗?

jll*_*gre 6

希望kill -3不会终止 JVM 进程。

在堆栈跟踪收集期间,线程转储对服务的影响非常小,尤其是在有数千个线程正在运行的情况下。

请注意,如果使用该-Xrs标志,JVM 将不再专门处理该SIGQUIT信号,然后该信号可能会终止进程,除非在某些本机代码中存在备用处理程序。


ine*_*ber 5

https://superuser.com/questions/352147/what-does-kill-3-mean可能会为您提供更多信息。

由过程来确定它在接收到时将如何准确地做出反应 SIGQUIT

由于该信号可以被进程捕获、忽略或阻塞,因此它可能不遵守kill. 如果你想更近距离地观察,我建议straceSIGQUIT用 kill发送它的同时用堆栈跟踪 PID 。