![什么是内存不足消息:牺牲孩子?](https://linux22.com/image/88054/%E4%BB%80%E4%B9%88%E6%98%AF%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%E6%B6%88%E6%81%AF%EF%BC%9A%E7%89%BA%E7%89%B2%E5%AD%A9%E5%AD%90%EF%BC%9F.png)
我的计算机最近耗尽了内存(这是在处理大型 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 如何决定首先杀死哪个进程?