2009-09-04 13 views
1

私のプロジェクトでLucene.Net-2.3.2.1を使用しています。私のプロジェクトはマルチスレッド環境もサポートしています。サービスが実行中で、メモリのブロックが徐々に増えていますので、数時間後にはタスクマネージャで150 MBのメモリが表示され、13 MBで始まるとのメモリが増加し、メモリはになります。そのLucene.Netメモリを増やしたいくつかの方法とオブジェクトがあります。私のdotTraceのうちの1つから、Index()、Segment()関連する関数は、サービスperfo rm。だから一度に、それはシステムをクラッシュさせます。"Lucene.net-2.3.2.1"メモリリークの問題

このメモリリークからアプリケーションを復旧する方法を教えてください。

+0

lucene.netのデベロッパーメーリングリストとバグトラッカーについての報告は、本物のバグです – CVertex

答えて

0

メモリ使用量が増加しても必ずしもメモリリークが発生するとは限りません。 .NETでのメモリリークはあまり一般的ではありませんが、チェックする必要のあるオプションがいくつかあります。

  • イベント。すべてのイベントリスナーが、使用されなくなるとすぐにパブリッシャーから切り離されていることを確認してください。そうしないと、サイト運営者が生存している限り、リスナーは生き続けることになります。
  • コードでハンドルを保持する使い捨てリソースをネイティブコードで使用する場合は、不要になったらすぐにDisposeを呼び出してください。
  • ブロッキングファイナライザは、他のファイナライズ可能オブジェクトがガベージコレクションされないようにするため、ファイナライザが必要以上に機能しないようにしてください(多くの場合、必要でない可能性があります)。

どのオブジェクトが生き残っているのか、収集されなかった理由を調べる場合は、WinDbg + Sosを使用することをお勧めします。

関連する問題