当我从 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
呢?我能做些什么来解决问题?为什么当我在另一台具有相同参数的机器上运行时它可以工作?