思い出すように、コピーコレクターはページングに適しているはずです。コピーによるトレースはポインター参照の局所性を向上させる傾向があるからです。これにより、プログラム(ミューテーター)にプラスの効果があり、リンクをたどるときにページフォールトが少なくなります。また、トレースによりページフォールトが少なくなるため、次の収集サイクルも改善されます。トレースアジェンダ(最初にポインタを処理する必要があります)は、データの局所性を改善する効果に影響を与える可能性があります。これは、さまざまなタイプのセル内のさまざまなポインターへのアクセス数に関する統計を測定することで改善できます。
現在、一般にトレースコレクターを検討する場合、通常はまだトレースされていないポインターを追跡する構造を維持する必要があります。同じページを指すすべての待機ポインターが一緒に保持されるように、この構造を編成することが可能かもしれません(ただし、そのようなポインターのリストを保持するために利用可能な手法によっては、より多くのスペースが必要になる場合があります)。可能なポリシーは、メモリ内のページへの待機ポインターが残っていない場合、同じページを指す待機ポインターの最大セットを常に最初にトレースすることです。
私が答えた後に追加された3番目の段落の質問に関して、コピーコレクションは再び答えです。ページが完全に解放されるため、OSは収集時に割り当てられた物理ページの数を減らす場合があります。マークアンドスイープコレクターでは、ページ全体がフリーになるイベントはおそらく非常にまれであるため、特定のメカニズムを考慮する価値はありません。
この種のアイデアは自然であり、おそらくいくつかの論文で説明されています。しかし、私はそれをすぐに思い出せません。Lisp GCの初期の論文には、これらのアイデアのいくつかが含まれていると思います(たとえば、carまたはcdrを最初にフォローすべきですか?)。
コピーコレクションのこの役割の良い点は、ページングが使用可能なストレージスペースを増やすため、コピーコレクションに適していることです。コピーコレクターは、原則として、実際のデータストレージに使用されるスペースの2倍のスペースを必要とすることを思い出してください。現在、ページングの効果は、マシンのアドレス空間と使用可能な物理メモリにも依存します。古いコンピューターでは、物理メモリは使用可能なアドレススペースよりもはるかに少なかったため、ページングは実際にはスペースボーナスであり、コピーGCなどのポリシーが許可されていました。物理スペースがアドレススペースと同じくらい大きい場合でも、GCを使用するプロセスがページングなしでより少ないアドレススペースを持つように、共有したい場合があります(ページングを参照))。これらの発言は、世代別コレクターを使用することにより、ある程度優先されます。彼らは一般に、まさにこれらの性質のために、若い世代のためにコピーコレクションを使用します、そしてそれは若い世代がほとんど短命だからです。
次に、世代別GCとキャッシュシステムとの相互作用がすべてあります。これについては、前の質問で説明しました。世代別ガベージコレクターは本質的にキャッシュフレンドリーですか?
これらの問題の詳細については、たとえば、キーワードGCとlocalityを使用してWebを検索します。