0

これは私の別の質問に関連しています

明らかな(またはそう思った)最大のメモリ消費者(asp.netキャッシュ内の画像)を排除した後、あまり変わっていません。このWebではエンタープライズライブラリの例外処理を使用しており(理由はわかりませんが、使用しています)、これらの例外はログに記録されません。ちなみに、サーバーには4 GBのメモリがあるので、物理メモリが問題になるとは思いません。

イベントログによると、次のようになります。

まず、これをページから取得します(同じページから2回取得することはめったにありません)。

Exception information: 
Exception type: Exception 
Exception message: mscorlib - Exception of type 'System.OutOfMemoryException' was thrown. 

次にこれ:

Description:
An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/672222825/Root
Process ID: 1544
Exception: System.OutOfMemoryException
Message: Exception of type 'System.OutOfMemoryException' was thrown.
StackTrace:    at System.Threading.ExecutionContext.CreateCopy()
  at System.Threading._TimerCallback.PerformTimerCallback(Object state)

私の質問はこれです:プロファイラーを使用してクラッシュの原因を確認するにはどうすればよいですか?JetBrainsの.netメモリプロファイラーとdotTraceの2つのプロファイラーを試しました。メモリープロファイリングは、文字列がたくさんあることを除いて、実際には何も役に立ちません。関数の実行時間はすべて正常でダンディであるため、パフォーマンスプロファイリングも役に立ちません。プロファイラーの実行中にこのエラーが発生した場合、プロファイリングが停止するだけです。おそらく間違って使用しています。

psフォーミングして申し訳ありませんが、できる限りのことをしました。

4

3 に答える 3

1

問題は解決しました-開発者の1人がデータテーブル全体をセッションに保存していて、それがメモリを使い果たしていました(そして、他の人に大丈夫かどうか尋ねることはしませんでした)。

私を困惑させる唯一のことは、YouIdiotYoureOverUsingSessionObjectExceptionをスローするのではなく、非常に醜くクラッシュする必要があるということです:)

まあ、生きて学びましょう...

于 2009-06-26T13:22:03.167 に答える
0

IDisposable実装でDisposeを呼び出していることを確認します。これを確認するためのかなり良い方法は、FXCopを介してコードを実行することです。

于 2009-06-24T07:44:48.227 に答える
0

リサイクル前のASP.NETの最大メモリ使用量を管理するmachine.configのProcessModelセクションのメモリ制限属性があります。

于 2009-06-24T07:57:53.317 に答える