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