05GDB記憶體問題排查1

2022-09-18 14:42:15 字數 748 閱讀 4109

總體思路:在方法最開始獲取一下記憶體狀態,在方法結束之前獲取一下記憶體狀態,看看兩者是否有差異,如果有差異,說明了有記憶體洩漏

1. 除錯初始狀態

1). 分配記憶體**,行號為10

2). 釋放記憶體**,行號為11

3). 斷點到行號10

4). 執行**

5). 執行停在行號10

2. 方法記憶體變化分析:

1)在分配記憶體前,使用call (size_t)malloc_stats()方法,獲取記憶體的初始狀態

2)當前執行緒記憶體使用情況

3)當前程序記憶體使用情況

4)下一步,完成分配記憶體,**來到11行

5)再次獲取記憶體分配情況

6)可以看到當前執行緒記憶體分配了10m(和**相符),整個程序也多了10m

7)下一步,完成釋放記憶體,**來到12行

8)呼叫記憶體檢視函式

9)看記憶體是否恢復到初始狀態(2),可以看到確實恢復到了初始狀態

補充:在gdb裡可以直接使用call呼叫函式

1) 直接呼叫全域性函式: call print123();

2) 直接呼叫某個物件的函式,也是可以的:call person.exe_process()

記憶體引起的藍屏問題排查

一台膝上型電腦增加了相同型號的4g記憶體,共8g記憶體,初使用一切正常。有一次在一天內出現了三次藍屏,大約間隔20分鐘就出現了一次。因為考慮新增了記憶體,所以先從記憶體排查起,找開記憶體蓋板後,型號相同,品牌相同,拆記憶體時發現有一塊溫度相對要明顯高一些,於是先留下溫度低的那塊進行測試。使用memt...

Linux 記憶體 占用較高問題排查

按 k 檢視 free 按兆m檢視 若伺服器沒有此命令則進行pidstat 安裝pidstat 是sysstat軟體套件的一部分,sysstat包含很多監控linux系統狀態的工具,它能夠從大多數linux發行版的軟體源中獲得。ps aux head 1 ps aux grep v pid sort...

問題排查之JVM記憶體洩漏

問題排查之jvm記憶體洩漏 1.問題描述,部署在客戶伺服器上的資料閘道器專案,客戶開發反應,出現伺服器記憶體占用很高的問題,懷疑是否為我們部署的專案導致?開始排查 一 endif 登入到客戶伺服器,首先確認是否是我們應用占用的記憶體 endif 檢視記憶體占用排行 ps aux sort k4,4n...