首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当发送杀死信号时,Java进程不会终止

当发送杀死信号时,Java进程不会终止
EN

Stack Overflow用户
提问于 2019-07-09 09:03:34
回答 2查看 872关注 0票数 0

有时,我们会面对我们试图杀死一个java进程,但是进程没有终止,我们必须发送杀死-9来终止它。

提问:

  1. 当java进程收到杀害-15信号时,会发生什么?
  2. 如果进程不终止,可能的原因是什么,以及如何诊断?
EN

回答 2

Stack Overflow用户

发布于 2019-07-09 21:26:09

当一个Java进程,或者更准确地说,Java接收到信号15 (SIGTERM)时,它启动关闭序列。其基本步骤之一是调用停机钩

关机挂钩是普通的Java线程。按照惯例,他们应该很快完成他们的工作,但是有时(就像普通的Java代码一样),关闭钩子可能会循环、阻塞、等待或以其他方式延迟终止。JVM将挂起,直到所有关机挂钩完成。

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

票数 2
EN

Stack Overflow用户

发布于 2019-07-09 10:30:52

  1. kill -15:发送SIGTERM,终止进程,但允许它首先进行一些清理。和平终结。
  2. 等待i/o等等。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56948967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档