Linux
kill -3 實際上會終止 java 程序嗎?或者只是生成一個執行緒轉儲?
CentOS 5.9
如果我執行
kill -3 <java process pid>
實際會發生什麼?根據這篇紅帽文章,我了解生成了 Java 執行緒轉儲,但程序是否終止?它似乎不是基於我的測試:[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
. 如果您想更近距離地對等,我建議在使用 killstrace
發送 PID 時堆棧跟踪 PID。SIGQUIT