この記事 here は-XX:+UseParNewGC
「並行GCで並列若い世代GCを有効にするため」。
私の混乱は、並列GCと同時GCの両方を有効にするために、
-XX:+UseParNewGC
または-XX:+UseParNewGC
and-XX:+UseConcMarkSweepGC
?JVM 6を使用しています。
あなたがリンクしたドキュメントは1.4.2 VMのためのものだったので、私はあなたが使用していると仮定します(JVM 5と6は異なる動作をします)。
から http://Java.Sun.com/docs/hotspot/gc1.4.2/
-XX:+ UseConcMarkSweepGCがコマンドラインで使用されている場合、フラグUseParNewGCも、コマンドラインで明示的に設定されていない場合はtrueに設定されます。
したがって、答えは-XX:+ UseConcMarkSweepGCを使用するだけでよく、並行コレクターと並列の若い世代のコレクターを有効にします。
編集:for Java 6、同じフラグ(-XX:+ UseConcMarkSweepGC)は並行コレクターを有効にします。必要なコレクターの選択はいくつかの事項に依存するため、異なる構成をテストする必要があります。シングルプロセッサ、シングルスレッドマシンを使用している場合は、シリアルコレクターを使用する必要があります(一部の構成のデフォルトは、-XX:+ UseSerialGCで明示的に有効にできます)。基本的にCPUバウンド、パラレルコレクターを使用します。これは、-serverフラグを使用する場合はデフォルトで有効になりますが、-XX:+ UseParallelGCを使用して明示的に有効にすることもできます。 GCの合計CPU時間を増やし、複数のCPUがある場合、コンカレントコレクターを使用できます(-XX:+ UseConcMarkSweepGC)。コンカレントコレクターは、より多くのRAM特定のワークロードのシリアルまたはパラレルコレクターよりもJVMメモリの断片化が発生する可能性があります。
Java/JDK 6 GCチューニング: http://www.Oracle.com/technetwork/Java/javase/gc-tuning-6-140523.html 。これはSun(現在のOracle)からです。完全なもの。
また、
http://kirk.blog-city.com/is_your_concurrent_collector_failing_you.htm
http://www.javaperformancetuning.com/
このブログエントリには、さまざまなコレクターの詳細な内訳と、有効なオプションがあります。 http://blogs.Oracle.com/jonthecollector/entry/our_collectors
Java GCのチューニングは基本的には暗い芸術ですが、私のアプリケーション(50 + GBのヒープと16の物理コアで実行)では、ConcMarkSweepコレクターは-serverのデフォルトを3倍、ParallelOldGCを2.2倍高速化しました。
マシンを他のプロセスと共有していない(つまり、アイドルコアが無駄になっている)場合は、ConcMarkSweepGCを使用します。
ParNewは、CMSを使用する場合のデフォルトの若い世代のコレクタです。CMSを使用するには、-XX:+ UseConcMarkSweepGCを指定するだけで、ParNewがデフォルトで使用されます。 CMSは、GCジッターの回避が優先される場合に優れたコレクターですが、ジョブのようなバッチでスループットがより重要な場合、デフォルトのSunパラレルコレクターがより良いジョブを行います。
2つのGCオプションを同時に有効にすることはできません。 UseParNewGCと比較して次世代GCよりも優れたCMSを使用することをお勧めします。 Java 1.7以降およびヒープサイズが比較的大きい(4GB以上など)を使用する場合は、G1の使用を検討してください。