在系統內存嚴重不足時,可能觸發OOM killer。
html
1.OOM kiler服務器
a. 問:oom_score的默認值是多少? 函數
答:0,oom_score=0時禁止內核殺死進程。測試
b. 問:oom_score如何設置?spa
答:兩個方式,手動設置或經過oom_adj計算。.net
計算:oom_score=2^n, n=oom_adj, oom_adj取值範圍爲15~-16。orm
2.四種內存泄露類型htm
a. 常發性內存泄露:內存泄露代碼會被屢次執行,每次執行都會泄露一部份內存;blog
b. 偶發性內存泄露:只有在特殊條件下才會發生的泄露,正常狀況不容易測試到,在特殊環境下,偶發性也會變成常發性;進程
c. 一次性內存泄露:發生內存泄露的代碼只會被執行一次,例如構造函數中的代碼;
d. 隱式內存泄露:運行中分配內存,結束時釋放內存,例如函數內。嚴格說這裏並無發生內存泄露,由於程序最終釋放了所申請的內存。可是對於一個服務器程序,須要長時間運行,不及時釋放內存也可能致使最終耗盡系統的全部內存;
參考文檔:
《Linux內存溢出(oom)和內存泄露(leak)》 http://www.it165.net/os/html/201405/8168.html
《Linux內核panic》http://blog.csdn.net/ylyuanlu/article/details/9115159