在此说明,可以通过overcommit_memory
和配置OOM-Killer :
- 2 =没有过量使用。如果要求太多,分配将失败。
- 0,1 =过量使用(启发式或始终使用)。当实际访问太多内存时,根据某些启发式方法终止某些进程。
现在,我可能完全误解了,但是为什么没有选项(或者为什么不是默认选项)杀死实际上试图访问它分配的过多内存的进程呢?
如果关键的系统进程要求太多的内存怎么办?
—
劳伦斯2014年
首先-它可以做到这一点。但是,该问题的最大问题是,如果某个进程在请求内存,那么它很可能是新执行的,换句话说,这是当前处理中涉及的新进程。您是希望OOM允许您未开放3天的即时通讯客户端继续浪费系统内存,还是希望YouTube今年实际加载一些时间?linuxatemyram.com
—
mikeserv
这实际上是该
—
Barmar 2014年
no overcommit
选项的作用。如果某个进程需要太多内存,它将失败。如果检查错误,通常会杀死自己;如果不这样做,则在尝试取消引用malloc()
返回的空指针时,可能会遇到“分段错误” ,并且将崩溃。
请注意
—
hans_meine
no overcommit
,根据引用的来源(例如kernel.org/doc/Documentation/vm/overcommit-accounting),实际上是2 模式。我想我会相应地编辑您的问题。