kill -3 は実際に Java プロセスを終了しますか? それとも単にスレッド ダンプを生成するだけですか?

kill -3 は実際に Java プロセスを終了しますか? それとも単にスレッド ダンプを生成するだけですか?

セントOS5.9

実行するとkill -3 <java process pid>実際に何が起こるのでしょうか?このレッドハットの記事Java スレッド ダンプが生成されることは理解していますが、プロセスは終了していますか? 私のテストではそうではないようです:

[root@foobox ~]# kill -3 14559

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

言い換えれば、サービスに影響を与えずにこの方法でスレッド ダンプを収集できるでしょうか?

答え1

うまくいけば、kill -3JVM プロセスは終了しません。

スレッド ダンプは、特に数千のスレッドが実行されている場合、スタック トレースの収集中にサービスにわずかな影響を及ぼします。

この-Xrsフラグを使用すると、JVM はSIGQUITシグナルを具体的に処理しなくなり、ネイティブ コードに代替ハンドラーが設定されていない限り、そのシグナルによってプロセスが終了する可能性があることに注意してください。

答え2

https://superuser.com/questions/352147/kill-3 の意味さらに詳しい情報を提供できるかもしれません。

受け取ったときにどのように反応するかはプロセス次第です。SIGQUIT

そのシグナルはプロセスによってキャッチ、無視、またはブロックされる可能性があるため、 を尊重しない可能性があります。さらに詳しく調べたい場合は、kill で送信しながらkillPID をスタック トレースすることをお勧めします。straceSIGQUIT

関連情報