0

ANTS プロファイラを使用してアプリケーションのメモリ使用状況をプロファイリングしていますが、Excell セル オブジェクトによってジェネレーション 2 で大量のメモリが保持されていることがわかります。アプリケーションは EPPlus ライブラリを使用して Excel ファイルを生成します。

ツールによって生成されたグラフの一部を添付しています。どのオブジェクトが参照を保持していてメモリを消費しているかを突き止めるためにさらにドリルする方法がわかりません。グラフをさらに掘り下げる方法について、ご意見をお聞かせください。

要約チャート

インスタンスグラフ_1

インスタンス グラフ_2

ここに画像の説明を入力

問題は次のとおりです。このグラフは再び同じオブジェクトを指しています。このツールを適切に使用していないと思います。

ありがとうございました

4

2 に答える 2

0

まず、開発者であるあなただけが、これらの Excell オブジェクトをメモリに格納する必要があるかどうかを知っています (たとえば、外部の観察者は、これらがキャッシュされたオブジェクトであるかどうかをどのように知るのでしょうか)。おそらく、これらのオブジェクトで Dispose が呼び出されたかどうかに関する情報を提示できます。

第二に、Large Object hap fragmentation の警告が表示された場所がわかりましたか? 私はそれを最初に調査します。

于 2013-03-11T12:45:38.940 に答える
0

作成した 2 つのスナップショット (概要画面から) を見ると、各スナップショットのワークフローのコンテキストが不足しているため、いくつかの仮定を立てます。

スナップショット 1: Excel ファイルを作成する前のものです。スナップショット 2: Excel ファイルを作成し、このアクションが完了したと見なした後です。

まず、ワークフローを少し調整して、次のスナップショットを作成することをお勧めします。

スナップショット 1: Excel ファイルを作成する前に取得。

スナップショット 2/3: アプリケーションのワークフローによって異なります。データを作成する(表示できるなど)場合は、このデータから事後にファイルを作成し、データ生成後にスナップショットを作成し、ファイル作成後に別のスナップショットを作成します。

最終スナップショット: 最終スナップショットを 1 つ作成します。これは、ファイナライザー キューをクリアできるため、ワークフローの完了後にメモリ内の内容をよりよく把握するための良い方法です。

いくつかのスクリーンショットからこれを行うのは難しいため、ここでは答えはありません-アドバイスだけです-私はあなたのアプリケーションについての知識がなく、データのキャッシュなどの目的のメモリ使用量について仮定しています.

(a) [Categorized References] を選択して [Instance Categorizo​​r] ビューを使用すると、一番上 (のみ) の参照チェーンから開始し、右から左に作業する必要があります。ここでも仮定 (単純化) を行うことで、Excel ライブラリの一部であるノードを超えて、どのクラスがそれを参照しているかを確認します。この時点で、これにより、コード内でその参照を探すのに十分な (b) か、より深く探索するための出発点 (c) のいずれかが得られます。(a) この参照チェーン (右から左へのパス) を追求する価値がないと思われる場合は、次のチェーンに移動します。Instance Categorizo​​r ビューでは、Right-Left、Top-Botton で作業します。

(b) ソース コードがある場合は、ノードを右クリックして Visual Studio のクラスを参照できます。または、自分でそこに行ってください:>

(c) (a) から参照チェーンを探索することにより、「このパス上のインスタンスを表示する」リンクを使用し、表示されたメトリック (サイズ、GC ルートからの距離) から判断して、クラスのインスタンスを選択することを意味します。詳しく調べる。これにより、インスタンス保持グラフが表示され、そのインスタンスの参照チェーンが詳細に表示されます。ここでツール ヒントに注意してください。色付きの領域とノードの種類はすべてさまざまなことを意味します。以下の私のリンクを参照してください。

この回答から明らかなことは、学ぶべきことがたくさんあり、私はあなたと一緒にアプリケーションを非常に高レベルでウォークスルーしただけで、多くの (はるかに多くの) 仮定。

いくつかのヘルプについては、リンクを参照してください。

クラス ビュー フィルタ

インスタンス カテゴライザー

インスタンス保持グラフ

大きなオブジェクトヒープの断片化のヒント<-他のポスターが指摘したように。

Red Gate のメモリ プロファイラのラーニング ポータル<- ビデオとテクニカル ペーパーのセクションを参照してください。

これで始められることを願っています。

于 2013-03-11T13:32:33.537 に答える