overcommit_never 和overcommit_guess 的定义和使用
一、overcommit_never:
含义:
严格禁止内存过度分配。
行为:
1、系统会确保分配的内存总量不超过物理内存加上交换空间(swap)的总和。
2、如果内存不足,分配请求会直接失败,而不是允许进程运行到内存不足时被 OOM(Out of Memory)杀死。
适用场景:
1、 适用于需要内存分配保证的应用程序,例如数据库或实时系统。
2、确保分配的内存始终可用,避免运行时崩溃。
二、overcommit_guess:
含义:
基于启发式算法的内存过度分配。
行为:
1、 系统会根据当前的内存使用情况和启发式算法,决定是否允许分配请求。
2、如果系统认为分配请求“合理”,即使超出物理内存,也可能会允许分配。
3、这是 Linux 的默认模式,允许一定程度的内存过度分配。
适用场景:
1、适用于大多数通用系统,尤其是需要灵活内存管理的场景。
2、提供一定的内存分配自由度,但可能在内存耗尽时触发 OOM 杀手。