アンマネージ dll から 1 秒あたり少なくとも千のコールバックを受信し、定期的にソケットからメッセージを送信するマルチスレッド アプリケーションに C# 2.0 を使用しています。GUI はメイン スレッドに残ります。
私のアプリケーションは、ほとんどの場合、起動時にオブジェクトを作成し、実行中に定期的に短期間だけ作成します。
私が経験している問題は、GC の実行時に発生すると思われる定期的なレイテンシ スパイク (開始時と終了時の関数のタイム スタンプによって測定される) です。
私はperfmonを実行しましたが、これが私の観察結果です...
Gen0 ヒープ サイズはフラットで、数秒ごとに定期的なスパイクがあります。
Gen1 ヒープ サイズは常にロール上にあります。上下
Gen2 ヒープ サイズはサイクルに従います。しばらく平らになるまで増加し続け、その後低下します。
第 0 世代および第 1 世代のコレクションは、常に 1 ~ 5 ユニットの範囲で増加しています。Gen 2 コレクションは一定です。