OOM杀手不会消失。如果没有记忆,则必须付费。您可以做的是设置一个限制,在此限制之后内存分配将失败。这正是
vm.overcommit_memory要
2实现的设置。
从文档:
Linux内核支持以下过量使用处理模式
2-不要过度使用。不允许为系统分配的总地址空间超过swap
+物理RAM的可配置量(默认为50%)。在大多数情况下,这取决于您使用的数量,这意味着进程在访问页面时不会被杀死,但是会在适当的分配内存时收到错误。
通常,内核会很乐意分发虚拟内存(过量使用)。仅当您引用页面时,内核才必须将页面映射到真实的物理框架。如果无法满足该请求,则需要由OOM杀手杀死一个进程以腾出空间。
禁用过量使用意味着如果内核无法提交所请求的内存量,eg
malloc(3)将返回
NULL。这使事情更具可预测性,尽管有局限性(许多应用程序分配的资源超出了他们的需要)。


![如何在Linux中禁用oom Killer?[关闭] 如何在Linux中禁用oom Killer?[关闭]](http://www.mshxw.com/aiimages/31/381972.png)
