繁体   English   中英

未处理的SIGLARM终止Java应用程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM