Windbg下使用dump分析記憶體溢位

China Soft發表於2024-10-17

https://www.cnblogs.com/M-MAKI/p/17085360.html

分析簡述

建立dump檔案;透過 !address -summary!eeheap -gc 判斷是否為記憶體洩漏;透過!dumpheap -stat觀察出問題的型別;透過!dumpheap -mt MT號 -min xxx 來索引該型別下佔用較高的資料;

再透過!gcroot GC根來檢視該根被哪些所引用;

1.建立dump的方式可以在工作管理員中,在對應的程序下右擊,選擇建立轉儲檔案

2.開啟Windbg程式,選擇Open Source File,選擇剛剛的dump檔案

3.在命令列輸入!dumpheap -stat,可以檢視當前所有託管型別的統計資訊,包括它們的記憶體佔用情況

4.從上圖可以看到String和XML是佔用記憶體最大的兩個型別,我們接著使用!dumpheap -mt 00007ffaa50cd698 -min 300 命令檢索對應MT中300byte以上的string

5.可以看出沒有特別佔用記憶體的string存在,但可以看看每個string下具體都儲存的什麼字串

使用!do 000001b45c201080,即!do GC根,可使用!gcroot GC根檢視該變數的引用情況,而如果gcroot出來沒有引用根,即Found 0 unique roots (run '!GCRoot -all' to see all roots).則考慮是否是因為死執行緒的原因造成的。

參考文獻:

https://blog.csdn.net/mzl87/article/details/127670331

https://blog.csdn.net/xdpcxq/article/details/128219304

https://blog.csdn.net/biyusr/article/details/125904480

相關文章