"kill -QUIT process_id"如何工作?

cha*_*had 7 java multithreading

我只是好奇.kill的手册页说QUIT,又名信号#3,是一个"核心"信号.对于Java进程来说,它似乎只是转储线程信息.那么,QUIT是用词不当吗?只是JVM实现了转储线程的单一3处理程序吗?

Ste*_*n C 8

QUIT 可以说是Java的用词.但是,如果允许应用程序更改信号处理程序的默认行为,那么通过该参数,任何信号名称都可能是用词不当.

实际上,UNIX信号名称与它们实际执行的内容之间的对应关系总是有点模糊和脆弱.但是,开发人员已经处理了这个"问题"超过30年,而不是一个真正的问题.

是的,Java线程堆栈转储行为由JVM实现.默认的UNIX/LINUX行为是创建进程的内存转储,除非这被其他因素抑制.


Wil*_*ung 6

是的,JVM捕获#3信号来转储线程.默认情况下,对于正常的unix进程,它会转储核心(即获取进程的内存快照并将其写入文件)并退出.

对于Java来说,这不是很有帮助,所以它会进行线程转储.