在抛出OutOfMemory异常之前,Ubuntu会关闭Java

时间:2015-06-01 13:09:32

标签: java linux ubuntu

我尝试使用IBM CPLEX Java / OPL库解决ILP问题。 solve方法在if循环中运行,如果ILP出现问题(例如内存不足或不可行的解决方案),则返回false。

    try {
        Log.printLine("Starting CPLEX solve");
        if (cplex.solve()) {
            Log.printLine("CPLEX solved successfully, now processing result");
        } else {
            Log.printLine("Solution could not be achieved, probably insufficient memory or some other weird problem.");
        }
    } catch (IloException e) {
        Log.printLine("Solution could not be achieved, probably insufficient memory or some other weird problem.");
        e.printStackTrace();
    } finally {
        Log.printLine("just making sure we can reach this!");
    }

问题在于,当我在具有44GB RAM的机器上运行java -Xmx24g -jar myjar.jar &时,Ubuntu内核会在cplex.solve()方法中关闭我的ILP。我的syslog文件说Killed proces Java -Xmx24g -jar myjar.jar &。出于某种原因,我的RAM使用率达到+ 44GB,这让我觉得这个ILP没有占用堆空间(那么是什么导致了这个巨大的内存使用?)。

此外,Ubuntu内核在完成求解之前或者在抛出OutOfMemory异常之前关闭了我的java进程。

我真的很喜欢我的ILP自然完成所以我可以保持程序运行,有谁知道如何配置Ubuntu或我的java参数以避免当前的Ubuntu行为?

0 个答案:

没有答案