命令:
1.dotnet-dump analyze mydumpfile.dmp
2.dumpheap -stat 找到堆上的對象信息
3.dumpheap -mt <mt> 列出所有與<mt>結構對應的對象,一般我都會找string對象的mt,看看里面大size的string對象是有哪些
4.do <address> 查看對象詳細信息
5.gcroot -all <address> 一般我也是找string地址,看看對象引用
舉個例子:下面幾張圖按照順序來看
復制出上圖所有的string的address,mt 和size到表格,根據size排序 (補充:圖中紅色箭頭沒有含義只是隨便標注幾個string對象的address)
拿到排序第一位的address,看看里面是什么
其實還有更簡單的方法。就是Visual Studio 直接打開dmp文件,然后調試托管內存,然后排序查看實例(鼠標移動上去會出現這個按鈕)
引用:
https://docs.microsoft.com/en-us/dotnet/framework/tools/sos-dll-sos-debugging-extension
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/debug-memory-leak