調優---記憶體洩漏的解決辦法
阿新 • • 發佈:2021-10-30
安裝 dotnet-counters
檢視程序號 dotnet-counters ps
監控程序dotnet-counters monitor --refresh-interval 1 -p43332(程序編號
找到 GC Heap Size 。然後統計這個程式的增長,為了找出記憶體洩露的程式碼
當你發現Gc Heap size 在增大時 你應該蒐集 該程序的記憶體情況 記憶體拍照 使用 dotnet-dump collect -p 43332(程序編號)
拍照後預設生成dmp檔案 我們需要對這個檔案進行分析 使用命令
dotnet-dump analyze core_20190430_185145(轉儲檔名)---》該命令表示進入該檔案
進行具體分析
dumpheap -stat 將展示所有物件在堆中的分佈情況 以物件大小排序 你只需要看最後一個
解釋一下 表頭
MT: 物件 在記憶體中的編號
Count 該型別物件有多少個
TotalSize 佔用大小
Class Name 型別名稱
定位最後一個
我們只需要分析型別具體物件 l列出所有物件
dumpheap -mt 00007ffdbee01e18 為型別編號
隨便選擇一個進行分析 該物件在什麼時候被執行
gcroot -all 00007f6ad09421f8 物件編號
直接定位到具體webapi 以及完整呼叫鏈
其實這只是為了找到具體問題 我們應該深思 使用靜態物件的時候需要謹慎 因為靜態物件不會被回收