6

我制作了一个 Java 程序并将其制作为 jar 文件。我想让它在我的 AWS 上 24/7 全天候运行。我使用一个名为 screen 的应用程序在我注销后保持它运行。我使用这个命令:

screen java -jar my_app.jar

但它不能一直运行。它恰好在运行一两天后停止。我做了一个日志,我没有发现任何异常来终止它。我想知道 JVM 是否会因为任何原因杀死我的应用程序,例如高内存使用率?JVM 是否保留日志?我在哪里可以找到 JVM 的日志?我必须让我的应用程序成为一个守护进程吗?如果我必须,怎么做?

4

2 回答 2

8

不,保持 Java 应用程序运行没有什么特别之处。只要至少有一个非守护线程仍然处于活动状态。例如,这是一个可以永远运行的完整程序:

public class Forever {
    public static void main(String[] args) throws InterruptedException {
        while (true) { Thread.sleep(1000); }
    }
}

如果您的应用程序正在死去,那是因为某处出现了一些错误。确保检查正在写入的任何日志以及进程的 stdout 和 stderr 以找出原因。

于 2013-10-14T02:26:51.903 回答
2

也许您找到了解决方案,但是在 Windows 上,您可以使用批处理“看门狗”在程序关闭时重新启动程序(以及记录数据)。

:launch
java -jar my_app.jar 1>>log.txt 2>>err.txt
goto launch

在 linux/unix 上,您可以按照这些方式进行 bash(我懒得进行 2 分钟搜索),一件好事是监控您的应用程序的内存使用情况,如果超过阈值则关闭它(例如70%),它将由 ba*h 脚本重新启动

于 2014-02-17T16:07:34.467 回答