Linux使用者程序記憶體洩露一種檢測方法

2021-06-18 02:55:32 字數 1082 閱讀 5047

linux

中,使用者程序在

/proc//status

檔案中記錄了該程序的記憶體使用實時情況。 *

vmsize:

虛擬記憶體大小。

整個程序使用虛擬記憶體大小,是

vmlib,vmexe, vmdata,

和 vmstk

的總和。

* vmlck:

虛擬記憶體鎖。

程序當前使用的並且加鎖的虛擬記憶體總數

* vmrss:

虛擬記憶體駐留集合大小。

這是駐留在物理記憶體的一部分。它沒有交換到硬碟。它包括**,資料和棧。 *

vmdata:

虛擬記憶體資料。

使用的虛擬記憶體。 *

vmstk:

虛擬記憶體棧

使用的虛擬記憶體

* vmexe:

可執行的虛擬記憶體

可執行的和靜態鏈結庫所使用的虛擬記憶體

* vmlib:

虛擬記憶體庫

動態鏈結庫所使用的虛擬記憶體

我們可以寫個指令碼,把你關注的程序或者所有的程序(

ps–ef

),的記憶體使用情況,主要針對

vmsize

vmdata

vmstk

三個方面每隔比如

3小時記錄到程序號對應的檔案中,每次記錄下乙個的時候,做個比較,如果發現最後乙個記錄點比第乙個記錄點小無記憶體洩露,如果大還需要與第二個記錄點的大小(排除系統啟動時的記憶體增長需要時間穩定下來),如果大的話就說明有記憶體洩露。還有記錄點不要太多,比如

30個,超過了就刪除除了第乙個記錄點外的倒數第二個老的記錄點。檢測出記憶體洩露,可以打到異常日誌中,供檢視。

我們需要去檢視那日誌,發現有洩露,會看是什麼原因的,至少可以知道是哪個程序的以及是棧還是堆上的,然後再分析**…

一種定位記憶體洩露的方法(Linux)

本文是 一種定位記憶體洩露的方法 solaris 對應的 linux 版本,偵錯程式使用 gdb。主要介紹例項部分。其他請見 一種定位記憶體洩露的方法 solaris 模擬 new失敗的程式 include class abc int i int j void f throw std bad all...

一種定位記憶體洩露的簡易方法

在這篇文章中,將介紹一種定位記憶體洩露的方法。主要原理是通過記憶體洩露時分配的序號以及大小,配合dbgheap.c檔案來定位。在vs開發過程中,開啟crt內部的記憶體洩露檢測函式,當程式退出時,在除錯視窗會輸出未釋放的記憶體資訊,例如下圖所示 從上面截圖可以得知,該次記憶體分配序號為1789698,...

VC 記憶體洩露與檢測的一種方法

本文介紹,當vc 或者mfc程式,出現記憶體洩露時,如何快速定位的方法,這種方法有一定的侷限性,在注意事項中會給出的。當mfc程式出現記憶體洩露時,退出程式時的vs除錯輸出視窗,一般會有如下顯示 上面顯示了在程式的哪個檔案的哪行語句,發生了記憶體洩露,其中 表示 記憶體分配編號 normal blo...