1. 程式人生 > >檢測應用的內存泄漏情況(shell)

檢測應用的內存泄漏情況(shell)

每次 系統性能 根據 容易 memory 問題 占用內存 sed bsp

寫代碼——調試——修BUG

改來改去可能還存在一些沒發現的問題,在工程量大的時候更容易出現,例如內存泄漏這樣的問題,嚴重影響著系統性能。

網上有些檢測C程序是否存在內存泄漏的工具還不錯的,例如valgrind。

為解決服務器中運行的應用是否存在內存泄漏問題,編寫了腳本來進行檢測。

思路如下:

01. 文件1:ProcessList,用來保存需要內存泄漏檢測的應用程序名,通過文件2:TestManage來管理,通過./TestManage -a 應用名 來添加或者./TestManage -d 應用名 來去除。

02. 文件3:MemoryLeakTest, 主程序。 首先清空文件4:RSSList(用來保存進程的內存檢測結果)和文件5:

LeakMemory.log(用來保存存在內存泄漏的應用名)。

03. 開始循環1,循環6次,每次循環通過文件1中的全部應用程序名—進程號—status文件得到占用內存大小,保存與文件4中,每次循環間隔1800秒,因此總計2個半小時。

04. 第三步結束後根據文件4中保存的所有應用程序的6次內存大小,相鄰兩個比較,若後面的大於前面的10%,flag變量值+1,共比較5次,若flag大於等於4,則認定該應用存在內存泄漏。

shell筆記:

01. sed用法:

  在匹配字符串下一行添加:sed -i /$str/a\ "$str_new" $filename

  在匹配字符串上一行添加:sed -i "/$str/i\\$str_new" $filename $str_new前的一個\是為轉義

  兩個變量用下劃線連接:${str1}_${str2}

02.

grep -m m "$str1" |awk -F $str2 ‘{print $p}‘| sed -n "np"

匹配前m行個str1,在包含str2後的第p列,取第n行。

檢測應用的內存泄漏情況(shell)