これらは、若い世代のガベージコレクションのアルゴリズムです。
2番目のもの(UseParNewGC)は、同時保有期間生成ガベージコレクション(Java同時および並列GCを参照)で自動的にアクティブ化されますが、2つの並列アルゴリズムに違いはありますか?
これらは、若い世代のガベージコレクションのアルゴリズムです。
2番目のもの(UseParNewGC)は、同時保有期間生成ガベージコレクション(Java同時および並列GCを参照)で自動的にアクティブ化されますが、2つの並列アルゴリズムに違いはありますか?
回答:
多くの検索の結果、私が見つけた最も良い説明は、今月の質問のJava Performance Tuning Webサイトからのものです。1.4.1ガベージコレクションアルゴリズム、2003年1月29日
若い世代のガベージコレクションアルゴリズム
(オリジナル)のコピーコレクタ(デフォルトは有効)。このコレクターが起動すると、すべてのアプリケーションスレッドが停止し、コピーコレクションは1つのスレッドを使用して続行されます(つまり、マルチCPUマシン上でも1つのCPUのみ)。基本的に、JVMはコレクションが完了するまで他のすべてを一時停止するため、これはストップザワールドコレクションと呼ばれます。
並列コピーコレクター(-XX用い有効:+ UseParNewGC)。オリジナルのコピーコレクターのように、これは世界を止めるコレクターです。ただし、このコレクターは、コピーコレクションを複数のスレッドに並列化します。これは、マルチCPUマシンの元のシングルスレッドコピーコレクターよりも効率的です(ただし、シングルCPUマシンの場合はそうではありません)。このアルゴリズムは、元のシングルスレッドのコピーコレクターと比較した場合、使用可能なCPUの数に等しい係数で若い世代のコレクションを高速化する可能性があります。
平行掃気コレクタ(:UseParallelGC -XXを使用して有効)。これは以前の並列コピーコレクターと似ていますが、アルゴリズムはマルチCPUマシン上のギガバイトヒープ(10GB以上)用に調整されています。この収集アルゴリズムは、一時停止を最小限に抑えながらスループットを最大化するように設計されています。ヒープスペースのサイズを自動的に変更するオプションのアダプティブチューニングポリシーがあります。このコレクターを使用する場合、古い世代の元のマークスイープコレクターのみを使用できます(つまり、新しい古い世代の同時コレクターは、この若い世代のコレクターと連携できません)。
この情報から、(CMSの協力を除いて)主な違いは、UseParallelGCは人間工学をサポートしているのに対し、UseParNewGCはサポートしていないことです。
UseParNewGC 若い世代のコピーコレクターの並列バージョンがコンカレントコレクターで使用されます(つまり、コマンドラインで-XX:+ UseConcMarkSweepGCが使用されている場合、コマンドラインで明示的に設定されていない場合はフラグUseParNewGCもtrueに設定されます)。
おそらく、理解する最も簡単な方法は、AlexeyRagozinによって作成されたガベージコレクションアルゴリズムの組み合わせでした。
結論:
-XX:-UseParallelGC
。
-XX:+UseParallelGC
リードを適用して、最新のJVMの若いGCと古いGCの両方に並列GCを使用します。参照してくださいbugs.openjdk.java.net/browse/...
通常「並列若い世代コレクター」として知られているUseParNewGCは、より洗練された効率的な点を除いて、並列ガベージコレクター(-XX:+ UseParallelGC)とすべての点で同じです。また、「コンカレントローポーズコレクター」と併用することもできます。
詳細については、Java GC FAQ、質問22を参照してください。
UseParNewGCにはいくつかの既知のバグがあることに注意してください
-XX:+ UseParNewGCを-XX:+ UseConcMarkSweepGCと一緒に使用すると、-XX:+ UseParallelGCと比較して、マイナーGCの一時停止時間が長くなります。
これは、オブジェクトを若い世代から古い世代に昇格させるには、このオブジェクトのアドレスを見つけるために(古い世代の断片化のために)Best-Fitアルゴリズムを実行する必要があるためです。
+ UseParallelGCはMarkandCompact Collectorでのみ構成できるため、-XX:+ UseParallelGCを使用する場合は、このようなアルゴリズムを実行する必要はありません。この場合、断片化は発生しません。