作成した 2 つのスナップショット (概要画面から) を見ると、各スナップショットのワークフローのコンテキストが不足しているため、いくつかの仮定を立てます。
スナップショット 1: Excel ファイルを作成する前のものです。スナップショット 2: Excel ファイルを作成し、このアクションが完了したと見なした後です。
まず、ワークフローを少し調整して、次のスナップショットを作成することをお勧めします。
スナップショット 1: Excel ファイルを作成する前に取得。
スナップショット 2/3: アプリケーションのワークフローによって異なります。データを作成する(表示できるなど)場合は、このデータから事後にファイルを作成し、データ生成後にスナップショットを作成し、ファイル作成後に別のスナップショットを作成します。
最終スナップショット: 最終スナップショットを 1 つ作成します。これは、ファイナライザー キューをクリアできるため、ワークフローの完了後にメモリ内の内容をよりよく把握するための良い方法です。
いくつかのスクリーンショットからこれを行うのは難しいため、ここでは答えはありません-アドバイスだけです-私はあなたのアプリケーションについての知識がなく、データのキャッシュなどの目的のメモリ使用量について仮定しています.
(a) [Categorized References] を選択して [Instance Categorizor] ビューを使用すると、一番上 (のみ) の参照チェーンから開始し、右から左に作業する必要があります。ここでも仮定 (単純化) を行うことで、Excel ライブラリの一部であるノードを超えて、どのクラスがそれを参照しているかを確認します。この時点で、これにより、コード内でその参照を探すのに十分な (b) か、より深く探索するための出発点 (c) のいずれかが得られます。(a) この参照チェーン (右から左へのパス) を追求する価値がないと思われる場合は、次のチェーンに移動します。Instance Categorizor ビューでは、Right-Left、Top-Botton で作業します。
(b) ソース コードがある場合は、ノードを右クリックして Visual Studio のクラスを参照できます。または、自分でそこに行ってください:>
(c) (a) から参照チェーンを探索することにより、「このパス上のインスタンスを表示する」リンクを使用し、表示されたメトリック (サイズ、GC ルートからの距離) から判断して、クラスのインスタンスを選択することを意味します。詳しく調べる。これにより、インスタンス保持グラフが表示され、そのインスタンスの参照チェーンが詳細に表示されます。ここでツール ヒントに注意してください。色付きの領域とノードの種類はすべてさまざまなことを意味します。以下の私のリンクを参照してください。
この回答から明らかなことは、学ぶべきことがたくさんあり、私はあなたと一緒にアプリケーションを非常に高レベルでウォークスルーしただけで、多くの (はるかに多くの) 仮定。
いくつかのヘルプについては、リンクを参照してください。
クラス ビュー フィルタ
インスタンス カテゴライザー
インスタンス保持グラフ
大きなオブジェクトヒープの断片化のヒント<-他のポスターが指摘したように。
Red Gate のメモリ プロファイラのラーニング ポータル<- ビデオとテクニカル ペーパーのセクションを参照してください。
これで始められることを願っています。