2:经常检查,切勿过度投入
在模式 2 中(自 Linux 2.6 起可用),可分配的总虚拟地址空间(/proc/meminfo 中的 CommitLimit)计算如下
CommitLimit = (total_RAM - total_huge_TLB) *
overcommit_ratio / 100 + total_swap
IIUC,echo 2 > /proc/sys/vm/overcommit_memory
禁用过度使用,因此它不应该允许分配比实际物理内存(ram + swap)更多的虚拟内存。但是当玩模糊测试三位一体时,它仍然报告内存不足并杀死我的桌面环境。
我猜想的一个可能的原因是always check, never overcommit
每个进程分配的内存永远不会超过CommitLimit
,但是仍然存在多个进程同时分配内存并且总和超过 的倾向CommitLimit
,我的猜测正确吗?