画面録画:VS Code で SharpLsp のメモリプロファイラーを使い、C# のメモリリークをリークの疑いから保持グラフ、修正の確認まで直す
ガイドを読む:C# と .NET のメモリリークを修正する方法
文字起こし
これは Storefront、メモリが増え続ける C# アプリです。VS Code から、そのプロセスのメモリを追跡します。
SharpLsp が 10 秒ごとにヒープのスナップショットを取りますが、ヒープは増え続けます。
リークの疑いは、一貫した増加の度合いで並びます。CustomerSession はどのスナップショットでも増えています。クリックすると、そのコードへジャンプします。
では、何がそれらのセッションを生かし続けているのでしょうか?
参照グラフをたどるとルートに行き着きます。すべての注文を覚えていて、決して忘れない static な Dictionary です。
修正は、直近 1,000 件の注文だけを残し、新しい注文が来るたびに一番古いものを追い出すことです。
再ビルドして、もう一度実行し、改めてメモリを追跡します。
今度はヒープが横ばいのまま、Low を超えるものはありません。エディターを離れることなく、リークを見つけ、直し、証明できました。