6

世代別ガベージ コレクタを含むプログラムを作成しています。2世代しかありません。私が疑問に思っているのは、完全なコレクションを実行する場合、最初に若いオブジェクトを収集し、生存者を古い世代に昇格させてから古い世代を収集することで、(パフォーマンスに関して) 何かを得られるのでしょうか?一掃?人々が通常どのように行うかはわかりません。

実装が少し簡単だったので、今は 2 段階の方法を使用していますが、おそらく 1 段階の方法の方が効率的でしょうか?

それが重要な場合、ガベージコレクターは非コピーです。

4

1 に答える 1

5

サバイバーを昇格させる頻度によって異なります。それらを頻繁に宣伝する場合、GC を 1 回のスイープで実行することで、はるかにうまくいくように見えます。そうでない場合は、かなり似ているように見えます。

いずれにせよ、2 つのフェーズで行うことで、少し冗長な作業を行っているように見えます。たとえば、昇進した人は、本質的に 2 回チェックされます (1 回は若い頃、もう 1 回は年寄りです)。繰り返しますが、これがあまり頻繁に発生しない場合は、より単純な 2 ステップの方法を使用します (既に機能しており、得るものはほとんどないため)。

于 2008-10-20T19:19:58.903 に答える