2011-10-18 4 views
0

ウィンザーを使ってリポジトリとNHibernateセッションを注入するASP.NET MVC 3アプリケーションがあります。今日、初めて、私はOutOfMemoryExceptionを打つ。ウィンザーが作成していたTransientのオブジェクトをリリースしていなかったため、最初は私が思っていました。簡単な実験として、私はそれらのすべてをライフスタイルPerWebRequestに変えましたが、メモリ使用パターンに大きな影響を与えているようには見えません。IISExpressプライベートバイトが管理されたヒープに大きな変更を加えることなく増加し続ける原因は何ですか?

  • 私はストレスのために使用しているいくつかの匿名オブジェクト
  • アクションのJSONのシリアル化を行う
  • 私は任意のアンマネージリソース
  • I 午前を使用していない任意のキャッシングをやっていませんよテストで小さなJSONオブジェクト(32バイト)が返されるため、大きなオブジェクトはどこにも含まれません。

IISExpressプライベートバイトが管理対象のヒープサイズは安定しています(Perfmonで検証済み)?

これをデバッグする正しいツールは何でしょうか?私は、Perfmonが管理されたヒープにリークを表示しないため、CLRプロファイラが役に立たないと仮定しています。

+0

ウィンザーのバージョンは? –

+0

私はWindsor 2.5.2.0を使用しています – Ragesh

+0

私はちょうどSOSを使って、GCのヒープが実際約32MBほどであることを確認しました。しかし、w3wp.exeは713MBを使い切っていて、まだ登っています。何か案は? – Ragesh

答えて

8

Glimpseを無効にすると、メモリ使用量が安定しているようです。

アンマネージドメモリをリークする可能性があるのはわかりませんが、web.configのGlimpse設定セクションにon="false"を設定するだけで、メモリの使用が即座に安定します。

+2

Glimpseと同じメモリリークの問題が本番環境で発生したことを確認できます。 – Sheepy

+0

同じ問題、同じ解決策。 – Joe

+0

enabled = "false"を意味しましたか? –

関連する問題