CentOS 5.9
如果我运行kill -3 <java process pid>实际上发生了什么? 根据这篇红帽文章 ,我明白,Java线程转储是生成的,但进程已终止? 它似乎不是基于我的testing:
[root@foobox ~]# kill -3 14559 [root@foobox ~]# service foo status foo (pid 14559) is running...
换句话说:我可以通过这种方式收集线程转储而不影响服务?
希望kill -3不会终止JVM进程。
线程转储对堆栈跟踪收集过程的影响非常小,尤其是在数千个线程正在运行的情况下。
请注意,如果使用-Xrs标志,则JVM不再特别处理SIGQUIT信号,然后该信号可能会终止该进程,除非在某些本地代码中有备用处理程序。
https://superuser.com/questions/352147/what-does-kill-3-mean可能会提供给你更多的信息。
这个过程决定了它接收到SIGQUIT时会发生什么反应
由于这个信号可能被这个过程所捕获,忽略或阻塞,所以它可能并不尊重这个kill 。 如果你想要更近一点,我build议堆栈追踪PID与strace同时发送SIGQUIT与杀死。