2012-03-12 19 views
0

Forms.ImagesやForms.WebBrowserなど、制限されたコントロールを持ついくつかのライブラリに依存するWinFormsアプリケーションがあります。散発的な突然のメモリリークにより、アプリケーションがクラッシュすることがあります。これは、時間が過ぎてもメモリリークが発生するわけではありません。それらは無作為で、多くの場合異なるCOM例外であり、予測することは不可能です。時には1時間後、場合によっては1日後に発生することもあります。WinFormsでのメモリリーククラッシュからの復旧

私の現在の方法論では、問題に少なくとも一時的に対処するために、別のアプリケーションでGetProcessesByName()を使用して最初のアプリケーションが実行されていることを確認する方法があります。ただし、進行中のプロセスがクラッシュすることはありますが、終了しない場合があるため、問題があります。私はWERメッセージを受け取るだけです(コンピュータでWERがオフになっているにもかかわらず)。さらに悪いことに、最初のプロセスがクラッシュし、メモリリークが発生すると、2番目のプロセスチェックアプリケーションALSOがクラッシュします。そして、私はシャバン全体を手動で再起動するまで何も動作しません。

1)プロセスBがプロセスBのクラッシュを引き起こしたメモリの問題にぶつからずにプロセスBが実行されている場合、誰かがプロセスAのチェックを有効にする方法を知っていますか?

2)上記のことが不可能であるか困難すぎる場合は、WERエラーが検出された場合にプロセスを再開するような、未処理のWERエラーなしでプロセスが実行されていることを確認するために、それはRAMの最大限に耐えることができますか?

ありがとうございます!

答えて

1

代わりの問題を回避しようと、あなたは最初にそれを修正しようとする必要があります。

アンマネージリソースを使用しているときにexpectionメモリリークがある場合は、私が代わりにあなたによってスローされたこれらの例外を無視すると言うだろうが、その後処分し、それはそれらを引き起こしていただきまし把握することができことはできません場合は再初期化、部品、キャッチコム

さらに、プロセスがクラッシュしていないように見えますが、それ以上の反応はありません。 Process.Respondingを参照してください。または、メモリ使用量を監視し、指定された制限を超えたときに終了させます。Process.WorkingSet64

0

通常、私はコマンドラインからプロセスを終了するためにpskillを使います。ネットサービスを書く必要はあまりありません。

しかし、おそらく小さくて簡単なプロセスチェックアプリケーションが失敗しているという事実は、問題の実際のシステムに何か問題があると私に信じさせます。

pslist & pskll

関連する問題