什么是内存不足消息:牺牲孩子?

什么是内存不足消息:牺牲孩子?

我的计算机最近耗尽了内存(这是在处理大型 GIS 数据集时编译软件的意外结果)。系统日志中详细说明了如何处理 OOM 情况,如下行:

Out of memory: Kill process 7429 (java) score 259 or sacrifice child

那是or sacrifice child关于什么的?它肯定不是在思考某种黑暗的仪式来让事情继续下去吧?

答案1

从我找到的源文件中oom_kill.c,OOM Killer,在此类消息写入系统日志后,检查所识别的进程的子进程,并评估是否可能杀死其中一个进程而不是进程本身。

这里从源文件中提取的注释解释了这一点:

/*
 * If any of p's children has a different mm and is eligible for kill,
 * the one with the highest oom_badness() score is sacrificed for its
 * parent.  This attempts to lose the minimal amount of work done while
 * still freeing memory.
 */

答案2

这是在谈论杀死一个孩子过程指定要发送信号的进程的名称KILL

答案3

这是 Oom(内存不足)杀手。当系统内存不足时,Linux 内核会杀死进程以释放内存。启发式方法确定哪个进程是释放内存而不损坏系统的最佳候选进程(通常,根拥有的进程不是最佳候选进程)。

更多详情请点击这里:OOM Killer 如何决定首先杀死哪个进程?

相关内容