フルガベージコレクションで最初に若い世代を収集する必要がありますか?

StackOverflow https://stackoverflow.com/questions/219540

  •  03-07-2019
  •  | 
  •  

質問

世代別ガベージコレクターを含むプログラムを書いています。世代は2つだけです。私が疑問に思うのは、フルコレクションを行うとき、最初に若いオブジェクトを収集し、生存者を古い世代に昇格してから古い世代を収集することで何か(パフォーマンス的に)得るのですか、それとも単にすべてをガベージコレクションするべきですか?一掃?人々が通常どのようにそれを行うのかわかりません。

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

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

役に立ちましたか?

解決

サバイバーをどのくらいの頻度で昇格させるかによります。それらを頻繁に昇格させると、GCを1回の掃引で実行することではるかに良くなるようです。そうしないと、かなり似ているように見えます。

どちらの方法でも、2つのフェーズで行うことにより、冗長な作業を少し行うように見えます。たとえば、昇格した人は、本質的に2回チェックされます(1回は若く、もう1回は古くなります)。繰り返しますが、これがあまり頻繁に起こらない場合は、より簡単な2段階の方法に固執します(既に機能しているので、ほとんど何も得られないため)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top