[英]Unhandled SIGLARM terminates Java application
我在相当干净的Ubuntu 16.04和18.04系统,x86_64主机上运行openjdk 1.8u191。
我运行这个简单的应用程序:
package net.iponweb;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) throws InterruptedException {
while(true) {
System.out.println(ZonedDateTime.now());
Thread.sleep(1000);
}
}
}
使用以下命令行:
java -jar sigalrm-1.0-SNAPSHOT.jar
现在,当我通过kill -14 ${PID}
向此java进程发送SIGALRM信号时,会遇到以下输出立即终止的情况:
2019-03-07T18:36:13.150+03:00[Europe/Moscow]
2019-03-07T18:36:14.151+03:00[Europe/Moscow]
2019-03-07T18:36:15.152+03:00[Europe/Moscow]
Alarm clock
让我感到困扰的是,我花了几个小时试图找到有关SIGALRM终止JVM的任何信息,但没有找到任何信息。 我的问题是,这是预期的行为,还是特定于实现的细节,而对我而言,下一站是JVM源代码? 因为我不希望SIGALRM终止我的应用程序,所以现在我在徘徊是否还有更多。
如果您查看signal(7)
的手册页 ,则会看到以下列表:
Signal Standard Action Comment
----------------------------------------------------------
SIGALRM P1990 Term Timer signal from alarm(2)
大多数信号的默认操作是终止进程,无论有没有核心转储。 在JVM中处理信号的最常见方法是在可能的情况下彻底关闭 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.