1

私は音声合成を行うためのスキーム フレーバーの設計に関心がありますが、音声に必要な低レイテンシーに対応する際に適切なガベージ コレクションを行うことに非常に関心があります。この分野の誰かが、この種の環境に適したガベージ コレクション アルゴリズムを教えてくれるのではないかと思っていました。私はリアルタイムのガベージコレクションを見ていましたが、これは理にかなっているように見えます.ガベージコレクターがかかる時間を制限したいので、音声が一時停止することはありません...おそらくコレクターはただの「十分に速く」、その作業を適切に配布するだけで十分でしょうか? マルチスレッド/マルチプロセッシングについてはまったく心配していません。また、これらの目標を求めて大量のスペースを浪費することについてもまったく心配していません。私は予測可能で、シンプルで、

ありがとう!

4

1 に答える 1

1

Unix ライクな OS の単一プロセス設定で、面白いアプローチを耳にしました。( Nickleに実験的に実装されましたが、 master にマージされたかどうかはわかりません。)

単純なマーク スイープ コレクターを使用しますが、ここにトリックがあります。マーク フェーズを実行する場合は、fork(). 子プロセスはマーカーを実行し、パイプを介して解放するオブジェクトのリストを親プロセスに送り返します。

これが機能するのは、子が親のメモリ状態のコピー オン ライト スナップショットで動作し、ハードウェア MMU の助けを借りてオペレーティング システムのメモリ マネージャによって適切な効率で維持されるためです。オブジェクトが到達不能になると、再び参照されることはないため、古いスナップショットからマークを付けると、解放できるオブジェクトの控えめな見積もりが常に得られます。


編集: この作業について私が見つけることができる最良の参照は、Summer of Code の提案です: http://web.cecs.pdx.edu/~juenglin/revamping.html

于 2012-11-03T04:37:04.057 に答える