java - 查找谁(什么)杀死了我的进程

标签 java linux process signals kill

当我从 bash 脚本运行我的 java 程序时,一段时间后我收到一条消息:

MyProgram.bash: line 30:  4388 Killed

我将 bash 的参数设置为最大值:

ulimit -Ss unlimited
ulimit -Sc unlimited
ulimit -Sn 4096

但是当我在执行后按 CTRL+C 时,我有这个错误:

OpenJDK 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated

我添加了这个信息,当我在另一台机器上运行具有相同参数的相同程序时,我没有这个异常! 我用这些参数运行我的程序(我的内存中有 5Go)

jvmargs="-d64 -Xms512m -Xmx3G -Xss1G"

我的算法占用大量内存,因为我使用序列化。那么为什么我杀死了消息,而不是 OutOfMemoryError 异常?我能做些什么来解决问题?为什么当我在另一台机器上使用相同的参数运行它时它可以工作?

最佳答案

重读错误信息:

OpenJDK 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated

如果 OpenJDK 无法正确处理中断信号(因为它完全没有内存),它可能会求助于杀死自身

关于java - 查找谁(什么)杀死了我的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659671/

相关文章:

linux - Linux 上的 killproc 和 pidofproc

linux - 在 Linux 中使用 Anaconda(在 Chromebook 上)

c - 这个程序创建了多少个进程,它们是由哪些进程创建的?

c++ - 程序如何成为一个过程。操作系统如何使程序成为一个进程

java - 用 Java 进行编程的最有效方法

java - 类型删除 Java 中的意外行为

java邮件程序不再发送邮件

java - java中名人算法的暴力解决方案

linux - vcan0接口(interface)linux通信

c - 父进程退出后如何让子进程终止?