尽管Linux使用虚拟内存和swap如何巧妙的管理内存,Linux设备可用的物理内存终归是有限的,在手机这样的内存容易吃紧的设备上很常见。当内核无法分配足够的物理内存给进程使用,但是这个进程有比较重要,急需使用内存,这时候Linux内核采用了一种更加主动,但是有些激进的方式来解决,那就是OOM。
OOM是什么?
http://blog.chinaunix.net/uid-20788636-id-4308527.html
http://blog.chinaunix.net/uid-25424552-id-3944805.html
http://dbanotes.net/database/linux_outofmemory_oom_killer.html
http://www.redaht.com/archives/redhat-list/2007-August/msg00060.html
保护进程不被 OOM killer 杀掉
很容易联想到一个问题,怎么保护一个进程保证他不会被OOM杀掉呢?可能有一个进程对我们来说很重要,我们万不想这个进程被杀掉,那就采取一些措施。
echo -17 > /proc/$PID/oom_adj
OOM killer 开启与关闭
# echo "0" > /proc/sys/vm/oom-kill
# echo "1" > /proc/sys/vm/oom-kill