4

私たちが知っているように、オブジェクトが作成されると、それは新しい世代内の eden 空間に格納され、次に生存空間 (生きている場合) に移動され、続いて古い世代に移動されます。

私の質問は、メジャー ガベージ コレクションは古い世代のオブジェクトのみをクリーンアップするのか、それとも新しい世代と古い世代の両方をクリーンアップするのかということです。

4

3 に答える 3

4

並列および同時マーク スイープの HotSpot には 3 つのタイプのコレクションがあります。エデンまたはエデンとサバイバースペースだけのマイナーコレクションがあります。すべてである完全なコレクションと、古い世代だけである並行コレクション。そのような主要なコレクションはありません。完全なコレクションという用語は、より頻繁に使用され、その意味が明確になっています。

G1 コレクターには、老若男女の 2 世代が存在しますが、コレクション タイプは 1 つだけであり、比較的継続的なコレクションを持っています。1 MB だけをクリーンアップするか、場合によってはすべてのメモリをクリーンアップする可能性があります。

Azul JVM は、すべての世代で純粋に同時実行されます。

于 2012-07-29T08:09:18.743 に答える
1

ホットスポット JVM の場合:

  • マーク スイープ コンパクト コレクター (シリアル、パラレル スカベンジ、パラレル オールド) は、オールド コレクション中にヤングとオールドの両方を収集しています。古いスペースのサイズが不十分な場合、これらのコレクターは非世代モードに切り替えることができます (完全なコレクションのみを効果的に実行します)。

  • コンカレント マーク スイープの古いコレクションでは、古いスペースのみが収集されます。ただし、同時収集が失敗すると、Stop-The-World Mark Sweep Compact Full コレクションにフォールバックし、両方のスペースを収集します。

  • G1には若いコレクションと古いコレクションがあります。ヤング コレクションは、ヤング スペースのみを収集します。古いコレクションは通常、古いスペースの一部を収集します (G1 はインクリメンタルです)。インクリメンタル モードが失敗した場合は、すべてのスペースを収集するフル GC にフォールバックします。

JVM 構成オプションについては、 GC スイッチのチートシートをご覧ください。

于 2012-07-29T22:24:03.610 に答える
1

若い世代がいっぱいになると、その世代だけの若い世代のコレクション (マイナー コレクションと呼ばれることもあります) が実行されます。古い世代または永続的な世代がいっぱいになると、通常、フル コレクション (メジャー コレクションと呼ばれることもあります) と呼ばれるものが実行されます。つまり、すべての世代が収集されます。

于 2013-01-12T16:08:11.347 に答える