フルガベージコレクションで最初に若い世代を収集する必要がありますか?
-
03-07-2019 - |
質問
世代別ガベージコレクターを含むプログラムを書いています。世代は2つだけです。私が疑問に思うのは、フルコレクションを行うとき、最初に若いオブジェクトを収集し、生存者を古い世代に昇格してから古い世代を収集することで何か(パフォーマンス的に)得るのですか、それとも単にすべてをガベージコレクションするべきですか?一掃?人々が通常どのようにそれを行うのかわかりません。
実装が少し簡単だったので、今は2段階の方法を使用していますが、おそらく1段階の方法の方が効率的ですか?
ガベージコレクターは、それが重要な場合、非コピーです。
解決
サバイバーをどのくらいの頻度で昇格させるかによります。それらを頻繁に昇格させると、GCを1回の掃引で実行することではるかに良くなるようです。そうしないと、かなり似ているように見えます。
どちらの方法でも、2つのフェーズで行うことにより、冗長な作業を少し行うように見えます。たとえば、昇格した人は、本質的に2回チェックされます(1回は若く、もう1回は古くなります)。繰り返しますが、これがあまり頻繁に起こらない場合は、より簡単な2段階の方法に固執します(既に機能しているので、ほとんど何も得られないため)。
所属していません StackOverflow