How can I see what garbage collector (CMS, Parallel and so on) is running by looking at gc logs for minor and major collection? I don't have access to the command line options set to java (the sysadm for the appserver wont let me see them). I do have rather verbose gc logs.
3 に答える
GC メッセージの正確な形式は、JVM のバージョンと JVM の設定によって異なります。GC チューニングに関する Oracle チュートリアルでサンプルを確認できます。
DefNew
デフォルトのコレクターです。シリアルかパラレルのいずれかで、どちらが選択されるかは、やはり JVM のバージョン/設定によって異なります。を使用して、JDK 6 のデフォルト設定を確認できますjava -XX:+PrintCommandLineFlags -version
。私のシステムでは、次のように出力されます。
-XX:MaxHeapSize=1073741824 -XX:ParallelGCThreads=4 -XX:+PrintCommandLineFlags -XX:+UseParallelGC
これは、Parallel GC がDefNew
私に向いていることを意味します。このSOの質問を確認すると、その回答の1つがこの表を参照しています。役立つかもしれません。
UPDATE JDK 6 のデフォルトの Old Gen GC は ParallelOldGCです。この啓発的な pdfを参照してください。-XX:+UseConcMarkSweepGC
特に、 JVM オプションを使用して、Old Gen GC を新しい Concurrent-mark-sweep GC に変更できます。
チャーリー・ハントの本「Java Performance」を引用すると、GC ログで使用される若い世代のスペースの名前は、使用される GC によって変わります。
PSYoungGen => ParallelGC
ParNew => CMS
DefNew => SerialGC
G1はよくわからん
この記事では、すべての HotSpot JVM ガベージ コレクション アルゴリズムの GC ログ サンプルを見つけることができます。
-XX:+PrintGCDetails
GC ログでそのレベルの詳細を確認するには、有効にする必要があります。