継続的に実行され、無人のコンソール アプリであるべき問題があります。コール スタックの奥深くにある多種多様なメソッドからアプリが頻繁に終了するのを見ていSystem.OutOfMemoryException
ますSystem.String.ToCharArray()
。呼び出しのスタック内の呼び出し、およびその他のありそうもない場所。System.String.CtorCharArrayStartLength()
System.Xml.XmlTextReaderImpl.InitTextReaderInput()
System.String.Concat()
MongoCollection.Save()
価値のあることとして、並列タスクを使用していますが、これは本質的にサーバー上で実行されている唯一のアプリであり、アプリの合計スレッド数が 60 を超えることはありません。これらのケースのいくつかでは、他の例外の理由を知っています。スローされますが、OutOfMemoryException はこれらのコンテキストでは意味がなく、問題を引き起こします。
- TaskManager と Perfmon のログによると、これが発生したとき、システムには 8 GB の空きメモリのうち少なくとも65% がありました。
- 例外ハンドラーは例外を起動してログに記録することがありますが、アプリのクラッシュを防ぐことはできません。
- ユーザーの操作なしでは、この例外から続行することはできません (システム全体で望ましくない Windows エラー報告を抑制したり、アプリをサービスとして実行したりしない限り、これは可能ですが、ユースケースには最適ではありません)。
したがって、上記の回避策は認識していますが、適切な継続ロジックを使用できるように、予期しない OOM 例外の説明 (理想的にはコードベースのハンドラー) が本当に必要です。何か案は?