1. 程式人生 > 其它 >調優---記憶體洩漏的解決辦法

調優---記憶體洩漏的解決辦法

安裝 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 以及完整呼叫鏈

其實這只是為了找到具體問題 我們應該深思 使用靜態物件的時候需要謹慎 因為靜態物件不會被回收