ガベージオブジェクトがガベージになるとすぐに認識できるガベージコレクションアルゴリズムはどれですか?
私の頭に浮かぶ唯一のことは、参照カウントがゼロ以外の値にデクリメントされるたびにサイクル検索が追加された参照カウントです。
それを達成できる他の興味深いコレクションアルゴリズムはありますか? (私は好奇心から尋ねていることに注意してください。そのようなコレクターはすべて、おそらく信じられないほど非効率的であることを認識しています)
ガベージオブジェクトがガベージになるとすぐに認識できるガベージコレクションアルゴリズムはどれですか?
私の頭に浮かぶ唯一のことは、参照カウントがゼロ以外の値にデクリメントされるたびにサイクル検索が追加された参照カウントです。
それを達成できる他の興味深いコレクションアルゴリズムはありますか? (私は好奇心から尋ねていることに注意してください。そのようなコレクターはすべて、おそらく信じられないほど非効率的であることを認識しています)
ガベージ コレクション アルゴリズムではありませんが、エスケープ解析を使用すると、オブジェクトの寿命を推測できます。したがって、効率が問題であり、オブジェクトをすべてではなく「明らかな」場合に収集する必要がある場合は、便利です。基本的な考え方は、プログラムの静的分析を (コンパイル時または VM 用にコンパイルされている場合はロード時に) 実行し、新しく作成されたオブジェクトが作成されたルーチンをエスケープする可能性があるかどうかを判断することです (したがって、分析の名前が付けられています)。 . オブジェクトが他の場所に渡されない、グローバル メモリに格納されない、特定のルーチンから返されないなどの場合、このルーチンから戻る前、またはそれよりも前に、最後に使用された場所でオブジェクトを解放できます。
関連するメソッド呼び出しよりも長く存続しないオブジェクトは、ヒープではなくスタックに割り当てることができるため、コンパイル時にガベージ コレクション サイクルから削除できるため、一般的な GC への負担が軽減されます。