1. overcommit_memory 是什么?
overcommit_memory 是一个内核对内存分配的一种策略. 具体可见 / proc/sys/vm/overcommit_memory 下的值
2. overcommit_memory 有什么作用?
overcommit_memory 取值又三种分别为 0, 1, 2
overcommit_memory=0, 表示内核将检查是否有足够的可用内存供应用进程使用; 如果有足够的可用内存, 内存申请允许; 否则, 内存申请失败, 并把错误返回给应用进程.
overcommit_memory=1, 表示内核允许分配所有的物理内存, 而不管当前的内存状态如何.
overcommit_memory=2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
3. overcommit_ratio 是什么?
当 overcommit_memory=2 的时候, 它一般是代表的是系统中总的内存的百分比
4. 虚拟内存
CommitLimit = SwapTotal + MemTotal * overcommit_ratio
总的虚拟内存 = 总的交换分区 + 总的物理内存 * overcommit_ratio
这些信息可以到 cat /proc/meminfo 中看到, 可以通过上述的计算公式可以计算就可以获得系统的 CommitLimit 的值
5. Committed_AS: 是什么?
Committed_AS 代表了系统已经用了的内存情况
6. overcommit_memory 的系统默认值是 0, overcommit_ratio 的默认值是 50. 可以实际中会遇到相同配置的电脑, 相同的程序一个可以申请到内存, 一个不可一申请到. 这时候可以看看 overcommit_memory 的值是否被修改了.
来源: http://www.bubuko.com/infodetail-3500977.html