有时候,我们将面临尝试杀死Java进程的尝试,但是该进程并未终止,我们必须发送kill -9来终止它。
问题:
答案 0 :(得分:2)
当Java进程或更准确地说是HotSpot JVM接收到信号15(SIGTERM)时,它将启动关闭序列。其基本步骤之一是调用Shutdown hooks。
Shutdown挂钩是常规Java线程。按照惯例,它们应该快速完成工作,但是有时(就像普通的Java代码一样),关闭挂钩可能会循环,阻塞,等待某事或以其他方式延迟终止。 JVM将挂起,直到所有关闭挂钩完成。
使用jstack
实用工具查找阻止及时终止的原因。在线程转储中寻找SIGTERM handler
线程-它可能正在等待其他(违规)线程完成。违规线程正在运行时,JVM将无法正常退出。
答案 1 :(得分:0)
kill -15
:发送 SIGTERM ,终止该过程,但首先允许其进行一些清理。和平终止。
正在等待输入/输出,等等。