要抓.NET應用程式的memory leak,最基本就是使用Visual Studio Performance Profiler,
該如何用呢? 操作步驟如下:
- 打開Performance Profiler(Alt + F2)
- 選擇分析目標,此處使用啟動專案並勾選Memory Usage,點擊啟動(建議使用release build)
- 在baseline時機點,點擊快照
- 執行懷疑有memory leak的操作後,再快照1次來比較2次快照的差異(點擊紅框處)。
- 可針對size差異做排序,找出那些物件造成leak,點擊其中一個物件,下方面板會顯示此物件的參考鏈,就可以去判斷為何物件還沒被GC。
- 取得所需的快照後,即可停止收集,並可將結果儲存起來。
https://learn.microsoft.com/en-us/visualstudio/profiling/memory-usage?view=visualstudio
https://learn.microsoft.com/en-us/visualstudio/profiling/memory-usage-without-debugging2?view=visualstudio&pivots=programming-language-dotnet
https://learn.microsoft.com/en-us/visualstudio/profiling/hot-path-to-root?view=visualstudio