当我使用默认设置时:
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
Run Code Online (Sandbox Code Playgroud)
我可以从/proc/meminfo文件中读取这些值:
CommitLimit: 2609604 kB
Committed_AS: 1579976 kB
Run Code Online (Sandbox Code Playgroud)
但是,当我vm.overcommit_memory从更改0为 时2,我无法启动更改前可以启动的同一组应用程序,尤其是 amarok。我不得不更改vm.overcommit_ratio为300,因此可以增加限制。现在,当我启动 amarok 时,/proc/meminfo显示以下内容:
CommitLimit: 5171884 kB
Committed_AS: 3929668 kB
Run Code Online (Sandbox Code Playgroud)
这台机器只有 1GiB 的内存,但是 amarokvm.overcommit_memory设置为 0时没有问题。但是在设置为 的情况下2,amarok 需要分配超过 2GiB 的内存。这是正常行为吗?如果是这样,谁能解释为什么,例如,firefox(比 amarok 消耗的内存多 4-6 倍)在更改前后以相同的方式工作?