ナレーション、オリジナル音楽、字幕付き。VS Code で収録した Storefront デモの一連の流れ:Track Memory、リークの疑い、保持グラフ、修正の入力、そして再実行。早送りの部分は画面上に表示されます。

画面録画:VS Code で SharpLsp のメモリプロファイラーを使い、C# のメモリリークをリークの疑いから保持グラフ、修正の確認まで直す

ガイドを読む:C# と .NET のメモリリークを修正する方法

文字起こし

これは Storefront、メモリが増え続ける C# アプリです。VS Code から、そのプロセスのメモリを追跡します。

SharpLsp が 10 秒ごとにヒープのスナップショットを取りますが、ヒープは増え続けます。

リークの疑いは、一貫した増加の度合いで並びます。CustomerSession はどのスナップショットでも増えています。クリックすると、そのコードへジャンプします。

では、何がそれらのセッションを生かし続けているのでしょうか?

参照グラフをたどるとルートに行き着きます。すべての注文を覚えていて、決して忘れない static な Dictionary です。

修正は、直近 1,000 件の注文だけを残し、新しい注文が来るたびに一番古いものを追い出すことです。

再ビルドして、もう一度実行し、改めてメモリを追跡します。

今度はヒープが横ばいのまま、Low を超えるものはありません。エディターを離れることなく、リークを見つけ、直し、証明できました。