我的计算机最近耗尽了内存(这是在处理大型 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 如何决定首先杀死哪个进程?