関数型スタイルを使用して .NET でゲームを構築するためのツールを作成しています。このためには、インクリメンタル GC、または収集時間が 1 ミリ秒程度に制限されているある種の GC が必要です。Mono の WIP であるリアルタイム インクリメンタル GC に関する論文を読みましたが、そのコードを調べたり使用したりする方法が見つかりません - http://static.usenix.org/event/vm04/wips /goh.pdf
「インクリメンタル GC」の意味を明確にするために、インクリメンタル GC は個々のガベージ コレクション サイクルを複数の作業スライスに分割し、プログラムの実行とインターリーブできるようにして、各スライスを比較的制限された時間で処理できるようにします。インクリメンタル GC 機能の主な目的は、比較的きめ細かいレベルで一貫して応答性を維持することにより、ソフト リアルタイム アプリケーションをサポートすることです。インクリメンタル GC は、.NET の世代別 GC などの主流の GC によって引き起こされる「厄介な一時停止」を排除します。インクリメンタル GC を使用する多くのシステムでは、コレクションの一時停止が約 1 ミリ秒に制限されています。これは、サイクル全体を 16.667ms 以内で実行する必要があるゲームに最適です。.NET 世代別 GC である OTOH では、通常 200 ミリ秒の一時停止が発生します。
モノ用の独自のインクリメンタル GC を作成するために時間を費やすのは本当に避けたいので、現在利用可能な代替の (ソフト) リアルタイム中心の GC を誰かが教えてくれれば、それは素晴らしいことです。独自の GC を作成する必要がある場合は、独自のモノ GC をゼロから作成するための良いリファレンスとなるオープン ソース GC があると便利です。
編集:「インクリメンタル」GC の意味を詳しく説明しました。