Unix错误消息“Killed”

时间:2013-06-05 23:17:58

标签: c++ unix

我正在Unix平台上使用C ++中的Hex游戏(目前正在运行c shell)。我的游戏的AI需要不到一分钟的时间来决定它的移动(我使用的是一种蒙特卡罗算法),经过几个步骤,程序自行终止,只是打印“Killed”才返回我的命令提示符。有没有人理解导致这种情况发生的原因,并对如何更改我的代码进行修复提出任何建议?如果它有帮助,我没有使用我的系统。我使用SSH Secure Shell连接到学校的服务器。我还应该指出,我不认为我的算法有问题,因为它可以像我预期的那样直到崩溃,但它在决定第7步时一直崩溃。

3 个答案:

答案 0 :(得分:2)

那是内存管理器那样做的。很可能你有某种内存泄漏。如果您想继续内存泄漏,可以在另一个会话中运行这样的脚本。将processname替换为二进制文件的名称。

#!/bin/bash
while true; do {
    pgrep -x "processname" | while read PID; do {
        echo -1000 > /proc/$PID/oom_score_adj; 
    } done;
} done;

答案 1 :(得分:0)

如果用户或系统管理员没有杀死内核可能拥有的程序。内核只会在特殊情况下终止进程,例如极端资源匮乏(想想内存+交换耗尽)。

答案 2 :(得分:0)

<块引用>

我不认为我的算法有问题,因为它按我的预期工作

我认为这是问题的症结所在。除了不满足其功能要求之外,算法还有很多可能“错误”的地方。

特别是,时间复杂度或空间复杂度对于现代硬件来说是不可行的。

就您而言,您的空间使用量激增,触发了 OOM 杀手。正如原始响应者所说,这可能是由内存泄漏引起的(但它也可能只是一个“坏”算法,会表现出相同的行为)。

新的 GUI 程序员经常忘记清除旧的渲染屏幕,因此它们只会相互堆积(巨大的内存泄漏)。这是我要检查的第一件事。