檢測應用的內存泄漏情況(shell)
阿新 • • 發佈:2017-11-17
每次 系統性能 根據 容易 memory 問題 占用內存 sed bsp LeakMemory.log(用來保存存在內存泄漏的應用名)。
寫代碼——調試——修BUG
改來改去可能還存在一些沒發現的問題,在工程量大的時候更容易出現,例如內存泄漏這樣的問題,嚴重影響著系統性能。
網上有些檢測C程序是否存在內存泄漏的工具還不錯的,例如valgrind。
為解決服務器中運行的應用是否存在內存泄漏問題,編寫了腳本來進行檢測。
思路如下:
01. 文件1:ProcessList,用來保存需要內存泄漏檢測的應用程序名,通過文件2:TestManage來管理,通過./TestManage -a 應用名 來添加或者./TestManage -d 應用名 來去除。
02. 文件3:MemoryLeakTest, 主程序。 首先清空文件4:RSSList(用來保存進程的內存檢測結果)和文件5:
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)