<p>您已经触发了内核的内存不足(OOM)处理程序;它以一种复杂的方式选择要杀死哪些进程,<em>会尽力杀死尽可能少的进程以产生最大的影响。根据内核使用的标准,Chrome显然是最有吸引力的进程。在</p>
<p>您可以在<code>/proc/[pid]/oom_score</code>文件下的<code>proc(5)</code>手册页中看到条件的摘要:</p>
<pre class="lang-none prettyprint-override"><code> /proc/[pid]/oom_score (since Linux 2.6.11)
This file displays the current score that the kernel
gives to this process for the purpose of selecting a
process for the OOM-killer. A higher score means that
the process is more likely to be selected by the OOM-
killer. The basis for this score is the amount of
memory used by the process, with increases (+) or
decreases (-) for factors including:
* whether the process creates a lot of children using
fork(2) (+);
* whether the process has been running a long time, or
has used a lot of CPU time (-);
* whether the process has a low nice value (i.e., > 0)
(+);
* whether the process is privileged (-); and
* whether the process is making direct hardware access
(-).
The oom_score also reflects the bit-shift adjustment
specified by the oom_adj setting for the process.
</code></pre>
<p>如果希望Python程序的<code>oom_score</code>文件是被杀死的,那么可以为它调整该文件。在</p>
<p>可能更好的方法是在系统中添加更多的swap,以缩短OOM killer被调用的时间。当然,有更多的交换并不一定意味着你的系统永远不会耗尽内存,如果有大量交换流量,你可能不关心它的处理方式,但它至少可以让你克服内存紧张的问题。在</p>
<p>如果已经为交换分区分配了所有可用空间,那么可以添加swap<em>文件</em>。因为它们要经过文件系统,交换文件的开销要比交换分区多,但您可以在驱动器分区后添加它们,这是一个简单的短期解决方案。您可以使用<code>dd(1)</code>命令来分配文件(<strong>不要使用<code>seek</code>来生成一个稀疏文件</strong>),然后使用<code>mkswap(8)</code>格式化该文件以供交换使用,然后使用<code>swapon(8)</code>打开该特定文件。(我想您甚至可以将交换文件添加到<code>fstab(5)</code>中,以便在下次重新启动时自动使用它们,但我从未尝试过,也不知道其语法。)</p>