由于内存不足,内核不断终止 Java 进程

由于内存不足,内核不断终止 Java 进程

我正在尝试使用 Java 库解决 CPLEX 问题,但内核由于“内存不足”而不断终止我的进程。我尝试在 CPLEX 程序上设置内存限制,并尝试将时间限制为 300 秒,但我的内核一直说:

Nov 18 07:44:01 node0 kernel: [4843935.635593] Out of memory: Kill process 4987 (java) score 979 or sacrifice child
Nov 18 07:44:01 node0 kernel: [4843935.635612] Killed process 4987 (java) total-vm:38252556kB, anon-rss:23959660kB, file-rss:764kB

问题是,当我的 CPLEX 中的某个实验无法解决问题(由于内存或时间限制)时,我希望它停止并继续下一个实验。但是,内核不断终止我的整个 Java 进程,阻止我尝试解决下一个实验。

我的 CPLEX 参数是:

cplex.setParam(IloCplex.Param.TimeLimit, SimManager.timeLimit); // make sure it doesnt run longer than X minutes (less than 10)
cplex.setParam(IloCplex.Param.WorkMem, 4096); // limit to my server RAM
cplex.setParam(IloCplex.Param.MIP.Limits.TreeMemory, 4096); // limit to my server RAM
cplex.setParam(IloCplex.Param.MIP.Strategy.File, 0); // do not use file nodes, this should force CPLEX to give up once RAM memory is full and return a clean Out of Memory before solving the next problem

有人知道如何避免内核终止 Java 进程吗?这样我就能知道 CPLEX 是否无法找到具有可用时间/RAM 限制的解决方案,以便我可以继续进行下一个实验?

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

uname -r
3.13.0-33-generic

谢谢你!

相关内容