gpt4 book ai didi

Java进程在发送kill信号时不会终止

转载 作者:行者123 更新时间:2023-12-02 01:25:53 25 4
gpt4 key购买 nike

有时,我们会遇到尝试杀死一个java进程,但该进程并没有终止,我们必须发送kill -9来终止它。

问题:

  1. 当java进程收到kill -15信号时,会发生什么
  2. 如果进程没有终止,可能的原因是什么,如何诊断?

最佳答案

当 Java 进程(或更准确地说 HotSpot JVM)接收到信号 15 (SIGTERM) 时,它会启动关闭序列。其基本步骤之一是调用 Shutdown hooks .

关闭 Hook 是常规 Java 线程。按照惯例,它们应该快速完成工作,但有时(就像常规 Java 代码一样)关闭 Hook 可能会循环、阻塞、等待某些内容或以其他方式延迟终止。 JVM 将挂起,直到所有关闭 Hook 完成。

使用jstack实用程序可以找到阻止及时终止的原因。在线程转储中查找 SIGTERM handler 线程 - 它可能正在等待其他(违规者)线程完成。当违规线程运行时,JVM 将不会正常退出。

关于Java进程在发送kill信号时不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56948967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com