9

ASP.NETアプリケーションを実行していて、実稼働ボックスでは約450MBのRAMを使用していますが、それほど多くは使用されていないはずであり、時間の経過とともに増加するように見えるため、リークまたは少なくとも何かが適切にリリースされていません。

PerfMonを調べたところ、GCGen2には416MBがありました。

誰もがそれがメモリに保持しているものを見つけるためのアイデアを持っていますか?dotTrace / ANTSを入手して、それをIIS(6- Windows Server 2003の場合)に接続することはできますか?それとも、より良い方法がありますか?:-)

ありがとう。

4

6 に答える 6

3

ループ内の一連の文字列を新しくするという古典的な問題は、新しい文字列を解放せずに新しい文字列に大量のメモリが割り当てられるために、この問題を引き起こす可能性があります。必要に応じて StringBuilder を使用していますか?

于 2008-12-01T13:03:42.030 に答える
2

Tess によるこのTecheEd プレゼンテーションを見ることは、よい出発点となるでしょう。

彼女は、大量の RAM を消費している ASP.NET アプリケーションのダンプを adplus を使用して取得し、そのダンプを分析のために WinDbg にロードする方法を示しています。WinDbg で !gcroot コマンドを使用して、予期しないルートを見つけ、そこから移動します。彼女は、他のオブジェクトへの参照を含む複雑な型をキャッシュまたはセッションに保存しないようにアドバイスしています。

于 2008-12-01T01:56:06.683 に答える
1

これはおそらく使用していないテクノロジに関する特定のブログですが、メモリの問題を診断する方法について説明しています - http://blogs.msdn.com/tess/archive/2008/09/12/asp-net-memory- issues-high-memory-usage-with-ajaxpro.aspx

Tess の作品を掘り下げてみてください。彼女は多くのデバッグ/診断の投稿を持っています。あなたにとって役立つものがもっと見つかると確信しています。

于 2008-11-30T22:29:15.073 に答える
1

どこでもイベントハンドラーを適切に配線解除していますか? イベントから切り離さないと、彼らは座っている可能性があると言われています. 大きなオブジェクトへの参照を必要以上に長く保持している可能性があります。

于 2008-12-04T13:02:23.437 に答える
0

IDisposable を実装するクラスのオブジェクトを適切に破棄していますか? これには、SqlConnections、SqlCommand、SqlDataAdapter、DirectoryEntry などが含まれます。IDisposable を実装していない (および/または破棄されていない) アンマネージ メモリを使用するオブジェクトはありますか?

于 2008-12-01T01:00:50.057 に答える
0

あなたはすでにすべての動きを経験していると確信していますが、私が管理しているサイトで同様の問題がありました.

サイトはサーバー上でおよそ 1 ギガのメモリを使用しており、多くのチェックとクリーニングを行っていたため、セッション呼び出しが正しく破棄されていなかったため、多くのセッション呼び出しを取り除く必要がありました。

また、私が持っていた同時ユーザーの数を持つ私のサイトのサイトでは、ギグの大まかな見積もりがまさに必要なものであることがわかりました.

また、ページに多くのユーザー コントロールを読み込むとサーバー メモリに負担がかかることもわかりました。理由はわかりませんが、ユーザー コントロールを削除して小さなページにすることで、いくつかの問題を特定するのに役立ちました。

最後になりましたが、使用しているセッション プロバイダーのタイプを確認してください。inproc がサーバーに過度の負担をかけている場合は、asp.net ステート セッション サービスに変更するか、SQL サーバーをセッション プロバイダーとして使用する必要があります。

あなたの考えと、見つけたものと詳細を教えてください。

于 2008-12-01T07:44:03.533 に答える