詳細なガベージコレクションの出力をファイルにリダイレクトするにはどうすればよいですか? SunのWebサイトはUnixの例を示していますが、Windowsでは機能しません。
Java -X
の出力から:
-Xloggc:<file>タイムスタンプ付きのファイルにGCステータスを記録します
文書化 ここ :
-Xloggc:filename
ロギングのために詳細なGCイベント情報をリダイレクトするファイルを設定します。このファイルに書き込まれる情報は、
-verbose:gc
の出力に似ており、ログに記録された各イベントに先行する最初のGCイベントからの経過時間が表示されます。-Xloggc
オプションは、両方が同じJava
コマンドで指定されている場合、-verbose:gc
をオーバーライドします。例:
-Xloggc:garbage-collection.log
したがって、出力は次のようになります。
0.590:[GC 896K-> 278K(5056K)、0.0096650秒] 0.906:[GC 1174K-> 774K(5056K)、0.0106856秒] 1.320:[GC 1670K -> 1009K(5056K)、0.0101132秒] 1.459:[GC 1902K-> 1055K(5056K)、0.0030196秒] 1.600:[GC 1951K-> 1161K(5056K)、0.0032375秒] 1.686:[GC 1805K-> 1238K(5056K)、0.0034732秒] 1.690:[フルGC 1238K-> 1238K(5056K)、0.0631661秒] 1.874:[GC 62133K-> 61257K(65060K)、0.0014464秒]
さらに、出力を別のファイルにパイプする場合は、次のことができます。
Sun JVM:で
-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps
ON IBM JVM:
-Xverbosegclog:C:\whereever\jvm.log
上記の回答に追加するには、良い記事があります: 有用なJVMフラグ-パート8(GCロギング) Patrick Peschlow氏。
簡単な抜粋:
フラグ-XX:+PrintGC
(またはエイリアス-verbose:gc
)は、「シンプルな」GCロギングモードをアクティブにします
デフォルトでは、GCログはstdoutに書き込まれます。 -Xloggc:<file>
を使用すると、代わりに出力ファイルを指定できます。このフラグは、-XX:+PrintGC
と-XX:+PrintGCTimeStamps
も暗黙的に設定することに注意してください。
-XX:+PrintGCDetails
の代わりに-XX:+PrintGC
を使用する場合、使用するGCアルゴリズムによって異なる「詳細な」GCロギングモードをアクティブにします。
-XX:+PrintGCTimeStamps
を使用すると、JVM開始から秒単位で渡されるリアルタイムを反映するタイムスタンプがすべての行に追加されます。
-XX:+PrintGCDateStamps
を指定すると、各行は絶対日時で始まります。
JEP 158 は、JVMのすべてのコンポーネントに共通のロギングシステムを導入し、ロギングがGCでどのように機能するかを変更(およびIMOを簡素化)します。 JEP 158は、JVMのすべてのコンポーネントからのロギングを制御する新しいコマンドラインオプションを追加しました。
-Xlog
たとえば、次のオプション:
-Xlog:gc
gc
レベルでinfo
タグを使用してタグ付けされたメッセージをstdout
に記録します。またはこれ:
-Xlog:gc=debug:file=gc.txt:none
gc
レベルを使用してdebug
タグでタグ付けされたメッセージを、装飾なしでgc.txt
というファイルに記録します。より詳細な議論については、 [〜#〜] jep [〜#〜] ページの例をチェックアウトできます。