9

関数型スタイルを使用して .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 の意味を詳しく説明しました。

4

1 に答える 1

5

ソース付きの Mono 用のインクリメンタル GC があるかどうかはわかりませんが、(oCaml 派生言語を対象とした) オープン ソースであり、HLVMと呼ばれる高性能に焦点を当てているように見えるものがあります。著者である Jon Harrop のブログもここにあり、ガベージ コレクションと関連テクノロジに関する優れた記事が多数掲載されています。

お役に立てれば!

于 2012-08-02T13:46:07.297 に答える