複雑なマルチスレッド アプリケーションの内部で、おそらく週に 1 回、メモリ不足の例外が発生しています。アプリケーションは、ネットワーク カードのバッファ オーバーランを回避するために、読み取ったデータがキャッシュされる複数のソケットを介して大量のデータを送信または読み取ります。
メモリ例外を分析するための最良の戦略は何ですか? 通常の実行時、アプリは Process Explorer で最大 1.5 ギガバイトの「すべてのヒープの合計バイト数」のサイズで表示されます。
どちらかをポーリングしているスレッドを持つことは戦略でしょうか
GC.GetTotalMemory()
また
PrivateMemorySize64()
物事の分析を開始するタイミングを知るために 1 秒に 1 回?私はまだ商用プロファイラーを調べていませんが、実際の問題分析に関して間違った結果をもたらす可能性があるそれらのパフォーマンスへの影響について少し心配しています.