內存溢出(oom)和內存泄露(leak)

     在系統內存嚴重不足時,可能觸發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

相關文章
相關標籤/搜索