我有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這個函數入手,我也正在學習中。進程