2025年12月21日 星期日

[.NET/Visual Studio] 如何使用Visual Studio Performance Profiler來找memory leak?

要抓.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