我只是好奇。 kill的手册页说QUIT,又名信号#3,是一个“核心”信号。对于Java进程来说,它似乎只是转储线程信息。那么,QUIT是用词不当吗?只是JVM实现了转储线程的单一3处理程序吗?
答案 0 :(得分:8)
QUIT 可以说是 Java的用词。但是,如果允许应用程序更改信号处理程序的默认行为,则通过该参数任何信号名称可能都是用词不当。
实际上,UNIX信号名称和它们实际执行的内容之间的对应关系总是有点模糊和脆弱。但是,开发人员已经处理了这个“问题”超过30年,而不是一个真正的问题。
是的,Java线程堆栈转储行为由JVM实现。默认的UNIX / LINUX行为是创建进程的内存转储,除非这被其他因素抑制。
答案 1 :(得分:6)
是的,JVM捕获#3信号以转储线程。默认情况下,对于正常的unix进程,它会转储核心(即获取进程的内存快照并将其写入文件)并退出。
对于Java,这不是很有用,所以它会进行线程转储。