【问题标题】:Java program terminate with java result: 137Java 程序以 java 结果终止:137
【发布时间】:2013-09-02 16:35:35
【问题描述】:

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

java result: 137

我听说这些错误意味着 (128 + signalnember)。在我的例子中,signalnember = 9 是 KILLSIGNAL。有没有人知道我怎样才能消除这个错误? 请帮帮我....

【问题讨论】:

  • no.. 不是某人.. 我不知道这是什么错误.. 大约 9 小时后我的程序终止并且上面的错误显示给我......我该怎么办?跨度>
  • 我不确定。终止信号不太可能来自程序本身。你是在什么环境下运行的?
  • 也许您的进程被其他管理程序/个人杀死,因为它可能超出了分配的内存/cpu 使用限制
  • 我在 ubuntu 12.04 的 netbeans 中运行我的程序..
  • 你的意思是,可能是内存限制的错误?

标签: java netbeans cassandra kill-process


【解决方案1】:

128 以上的退出代码意味着进程因收到 信号(exitCode = 128 + signalNumber)。 ==> 在您的情况下,它是信号 9 (= SIGKILL

【讨论】:

  • 我知道...那我该怎么办?如果我重新运行我的程序,是否有可能再次出现错误?如何消除错误?
【解决方案2】:

由于这是一个内存不足的问题,如果可能的话,我只会将操作分成几部分。我今天必须这样做,实际上我今天处理了大约 15,000,000 万条记录。我只是把它分成 250,000 个循环它并清除我的数组。

【讨论】:

    【解决方案3】:

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

    service cgconfig status
    

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

    【讨论】:

      猜你喜欢
      • 2012-08-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      相关资源
      最近更新 更多