當前位置:首頁 » 操作系統 » linux內存泄露檢測工具

linux內存泄露檢測工具

發布時間: 2023-07-20 12:52:04

『壹』 linux Kernel模塊內存泄露分析

假如通過「Free」查看內存幾乎耗盡,但通過 top/ps 命令卻看不出來用戶態應用凳凱程序佔用太多的內存空間, 那麼內核模塊可能發生了內存泄露

SLAB 是Linux內核中按照對象大小進行分配的內存分配器。

通過SLAB的信息好讓來查看內核模塊佔用的內存空間:

方法1. 查看meminfo文件

方法2. 查看slabinfo文件

一般查看slabinfo文件就足以,如果發現slabinfo中佔用內存過大,那基本可以斷定,內核模塊出現了內存泄露了
還有個命令 slabinfo 也是可以看,其實也是去讀 /proc/slabinfo 後可視化出來

Linux內核的Kmemleak實現內存泄露檢測

看看下面這個函數是哪裡導致的內存泄漏呢?

一眼可能不容易看出上面的有什麼問題,有kmalloc,有kfree 成對出現的。

問題正好出在 pr_debug 這個函數中的參數傳遞, 熟悉函數調用傳參的人應該會知道編譯器一般對參數的處理採用堆棧的方式,是一個先進後出的過程,這樣參數的執行一般是逆序的(由於編譯器實現的不同,這個過程不棗襪喚是確定的),這樣kfree會在kmalloc之前運行,導致每次運行都會泄漏一點內存。

Resolving Memory Leaks In Linux Kernel

Slab Allocator

Proc Info

Using Crash Debugger

『貳』 linux內存泄漏怎麼查

可以使用對應的軟體測試工具來查,如parasoft的c/c++等

『叄』 Linux系統中怎麼使用valgrind檢查內存

valgrind主要用於檢測程序內存使用異常,例如使用未初始化內存,重復釋放內存,堆棧非法訪問,申請空間未釋放等。
使用示例(檢測內存泄露): valgrind --leak-check=full --show-reachable=yes --show-leak-kinds=all 程序名
更多使用方法可以參見help信息

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:705
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:969
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:677
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:830
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:737
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1076
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:309
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:189
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:875
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:830