.NET (Excel アドイン) で OutOfMemoryException をトラップする方法

StackOverflow https://stackoverflow.com/questions/776080

  •  13-09-2019
  •  | 
  •  

質問

.net アドインで OutOfMemory 例外が発生します。アドインは、多数の管理対象オブジェクトと管理対象外オブジェクトを使用しています。この例外をトラップする方法はありますか?

更新しました:処理が必要で定期的に解放されない大量のデータを処理するアプリケーションであれば、どのアプリケーションでも OutofMemory 例外が発生する可能性があると思います。メモリ内のいくつかの構造を分析するメソッドがあるとします。300 個の構造を与えると、それぞれをメモリにロードして分析し、処理を完了します。この操作では、メモリ使用量は X でした。ここで、処理する構造体を 3000 個指定すると、メモリ内のそれら 3000 個が分析されることになり、メモリ使用量は 10 倍になります。

更新しました

この問題は Excel 2007 でのみ発生し、Excel 2003 では発生しないため、MSDN 担当者に調査を依頼しました。

役に立ちましたか?

解決

.Net では、要求されたメモリをアプリケーションに割り当てることができない場合、ランタイムによって OutOfMemoryException がスローされます。そのため、このような例外を処理するために実行できる実際の作業はほとんどありません。

それを捕まえるのではなく、最初からそれが起こらないようにする必要があります。例外を無視しても問題は解決しません。

他のヒント

OutOfMemoryException が発生した場合、プログラムは消滅し、存在しなくなり、継承され、もはや存在せず、作成者のもとへ向かいました。

しかし真剣に、不足したメモリの一部を回復することができないため、何もすることができません。

ガベージコレクターがあなたを捕まえている可能性があります。定期的に収集を強制してみてください。

それでも問題が解決しない場合は、次の内容をお読みください。 http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top