web-dev-qa-db-ja.com

詳細なガベージコレクションの出力をファイルにリダイレクトする方法は?

詳細なガベージコレクションの出力をファイルにリダイレクトするにはどうすればよいですか? SunのWebサイトはUnixの例を示していますが、Windowsでは機能しません。

68
djangofan

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秒] 
89
Michael Myers

さらに、出力を別のファイルにパイプする場合は、次のことができます。

Sun JVM:

-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps

ON IBM JVM:

-Xverbosegclog:C:\whereever\jvm.log 
36
Marc Giombetti

上記の回答に追加するには、良い記事があります: 有用な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を指定すると、各行は絶対日時で始まります。

Java 9および統合JVMロギング

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 [〜#〜] ページの例をチェックアウトできます。

4
Ali Dehghani