大量のメモリを処理する必要のある分析アプリケーションをC#で作成しています。メモリ管理を最適化するためにANTSMemoryProfiler7.4を使用しています。そうしているうちに、私が使用している(そして必要な)double [、]配列はすべて、LOHに配置されていることに気付きましたが、これらの配列の最大のものは約24.000バイトです。私の知る限り、オブジェクトは85.000バイトより前に配置しないでください。問題は、これらのdouble [、]配列のインスタンスが約数千あるため、メモリの断片化が多いことです(合計メモリ使用量の約25%は、使用できない空きメモリです)。LOHに格納されているこれらの配列の一部は、サイズがわずか1.036バイトですらあります。問題は、より大規模な分析を実行しなければならない場合があり、LOHの断片化による大量のメモリ損失のために、メモリ不足の例外が発生することです。
定義上大きなオブジェクトであってはならないのに、なぜこれが起こっているのか誰かが知っていますか?