Java - 在什么情况下 JVM 可能会突然崩溃?

标签 java unix process jvm daemon

我在我的 ubuntu 机器上运行一个守护进程 java 进程:

java -cp (...) &> err.log&

进程随机运行一段时间,然后就消失了。日志中没有任何内容,err.log,没有创建 JVM 崩溃文件 (hs_err_*.log),什么都没有。我的两个问题是:

1) java进程在什么情况下会突然结束?

2) 有没有办法知道进程发生了什么(知道 PID)? UNIX 是否以某种方式保留有关已完成进程的信息?

最佳答案

1) java进程在什么情况下会突然结束?

当它自己退出时,但我猜你排除了这种情况,或者当它被 SIGKILL 杀死时。如果您使用的是 Linux,这可能是 oom killer 。您查看系统消息日志了吗?

2) 有没有办法知道进程发生了什么(知道 PID)?

通常不会,除非您配置一些跟踪工具来获取该信息

UNIX 是否以某种方式保留有关已完成进程的信息?

不,但是根据您使用的 Unix 变体,添加这些内容可能很简单。 在您的示例中,您可以使用 echo $?

打印进程退出状态

如果是 265,则表示进程已被信号 9 (=265-256) 终止。

关于Java - 在什么情况下 JVM 可能会突然崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259934/

相关文章:

linux - 如何手动排队进程

java - 无法在 linux 中的 tomcat 上运行 solr(404 未找到/solr)

java - 替换正在运行的 Java 应用程序中的证书

java - 通过创建一个新数组并确保没有发生内存泄漏来扩展 Java 数组

string - 更改索引 X 处的字符串 char

c# - 如何在Windows中运行应用程序?

Java:我可以要求一个子类来定义一个属性值吗?

c++ - Solaris中如何检测文件泄漏以及相应的代码?

unix - 相当于 DOS 中的 unix ``(反引号)?

c# - 无法访问该文件,因为该文件正在被另一个使用 ffmpeg 的进程使用