当我从 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/