Java程序以Java结果137终止。

23

我有一个用netbeans编写的程序。该程序从cassandra读取大约100万条数据,对其进行处理,并将结果再次写入cassandra。我的程序运行了约9个小时,但突然出现以下错误而终止:

java result: 137

我读到这些错误意味着(128 + 信号数)。在我的情况下,信号数为9,也就是KILLSIGNAL。有人知道如何消除这个错误吗?请帮帮我....


不,不是某个人的问题,我不知道这是什么错误...大约9个小时后,我的程序终止了,并显示了上述错误...我该怎么办? - Anse danesh
我不确定。杀死信号不太可能来自程序本身。你在什么环境中运行它? - Paul
4
您的进程可能会被其他管理程序/个人终止,因为它可能超出了分配的内存/CPU使用限制。 - Juned Ahsan
我正在Ubuntu 12.04上的Netbeans中运行我的程序。 - Anse danesh
你的意思是,可能错误是关于内存限制的吗? - Anse danesh
我能捕获信号编号9吗? - Anse danesh
3个回答

7

如果有cgroup配置限制资源,可能会在超过限制时杀死进程(如消耗的内存)。 请检查cgconfig服务是否正在运行。在RHEL上:

service cgconfig status

您还可以检查Java崩溃日志文件hs_err_.log以获取更多详细信息。


3

如果退出码大于128,则表示该进程由于收到信号而死亡(exitCode = 128 + signalNumber)。 ==> 在您的情况下,是信号9(= SIGKILL)导致进程死亡。


1
我知道...那我该怎么办?如果我重新运行程序,错误会再次出现吗?我该如何消除错误? - Anse danesh

0

由于这是一个内存不足的问题,如果可能的话,建议将操作分成几个部分。事实上,今天我就必须这样做,因为我今天正在处理大约1500万条记录。我只是将它分成了250,000个块进行循环,然后清除了我的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接