我有2个定时任务,一个任务A是00:00开跑,另外一个B是04:00开跑。正常状况下A会在2点多时候跑完,可是某一天由于某一步骤用的时间太久,致使4点还没跑完,这时候A内存占用大约在12g左右。4点开始了,B开始运行了,逐渐的跑起来了,当内存用到6g左右的时候,系统内存不足,把A杀死了。linux
疑问:对于这个我有一个疑问,那就是为何后起来的进程没有被kill,反倒杀死了原来跑的好好的进程。electron
到当linux发生oom的时候,系统会根据必定策略找出进程杀掉(SIGKILL)来释放内存。函数
linux选择进程的策略能够参考http://elixir.free-electrons.com/linux/latest/source/mm/oom_kill.c这个学习
能够从select_bad_process这个函数入手,我也正在学习中。进程