我的应用程序在嵌入式Linux中运行了几个小时,突然OOM杀手跳了出来。
我设置overcommit_memory=2
和overcommit_ratio=50
来挑起情况并抓住可能的泄漏,但是OOM杀手仍然罢工!
要检查我的设置是否处于活动状态,我要求设置一个大型malloc,当我设置overcommit_memory=2
时它确实返回零。
那么,为什么OOM杀手仍在开始,我该怎么做才能调查问题的根源?
答案 0 :(得分:0)
因此,问题得到解答:使用sysctl调整VM的值。必要的参数是overcommit_ratio和dirty_ratio。 更新:比2009年晚的Linux版本具有更精确的字节调整,而不是百分比。