この記事では、主にJava9 GCログパラメーターの移行を研究しています。
JVMとGCを統合するロギング
Java9は、統一されたログフレームワークを導入し、GC関連のログ出力と構成も含まれています。
関連JEP(JDK強化提案)
Xlog構文
-xlog [:option] option:= [what>] [:[<utput>] [:[<decorators>] [:<utput-options>]]] 'help' '' disable 'what:= tag-set> [*] [= <level>] tag-set:= <tag> [+nev of tag:= <tag of tag:= <tag-set> [*] [= <level>] 'stderr' 'stdout' [file =] <filename>デコレーター:= <decorator> [、...] 'none' decorator:= uptime timemillis uptimemillis timenanos uptimenanos pid tid tidレベルタグ出力-options:= <output_option>パラメーター=値
何
主にタグとレベルを構成します
タグ
すべてがすべてのタグを表す場合、他のタグは次のとおりです。
追加、年齢、アロック、注釈、AOT、アタッチ、アタッチ、バリア、バイアスロッキング、ブロック、ボット、ブレークポイント、バイテコード、国勢調査、クラス、クラスシスト、クリーンアップ、圧縮、比較、制約、COUPS、CPU、CSET、データ、デフォルトマツ、DEFERIST、GC、Event、Event、Eventions、Eventions、eartionハッシュテーブル、ヒープ、ユーモンガス、ihop、iklass、init、itables、jfr、jni、jvmti、livension、load、roader、logging、mark、marking、metadata、metaspace、mu、mu、modules、monitorinflatio n、monitormismatch、nmethod、oberize、oberize、oberize、oberize、oberize、oberize、offerize、oberize、oberize、oberize、obertaged、パッチ、パス、フェーズ、プラブ、予約注文、プロモーション、保護、パージ、再定義、Ref、Refine、Refine、Remset、Remset、Recopt、SafePoint、Scange、Scru B、Sett、Stackmap、Stacktrace、Stackwalk、Start、Startuptime、State、Stats、String、Stringdedup、Stringup、Stringtable、Subclass、Sublass、Sweav、sweed、swead、swead、sweed、sweat、theme、swee検証、検証、vmoperation、vtables、workgang
レベル
主にオフ、トレース、デバッグ、情報、警告、エラーに分割されます
出力
-Stdout( `stdout`に出力を送信) - stderr(` stderr`に出力を送信)-file = filename( `テキストファイルに出力を送信`)
上記のように3つのタイプがあります。ファイルを指定する場合、%P変数を使用して現在のJVMのPIDを表し、%Tを使用してJVMの開始タイムスタンプを表すことができます。例えば
-xlog:gc:demoapp-gc-%p-%t.log
出力ファイル名は次のとおりです。
DemoApp-GC-1678-2018-03-01_21-44-18.log
デコレーター
指定されていない場合、デフォルトはアップタイム、レベル、タグです。例えば
[3.080S] [INFO] [GC、CPU] GC(5)ユーザー= 0.03S SYS = 0.00S REAL = 0.01S
例
-xlog:gc = trace:file = gctrace.txt:uptimemillis、pid:filecount = 5、filesize = 1024
タグはGC、レベルはトレース、回転ファイルは5、各ファイルは1m、ファイル名はgctrace.txt、脱退者はuptimemillis、pidです
出力インスタンス
[1110ms] [1867] Gc(2)一時停止備考17m-> 17m(256m)2.024ms [1110ms] [1867] Gc(2)ライブデータを最終化する0.000ms [1110ms] [1867] Gc(2)一時停止クリーンアップ17m-> 17m(256m)0.177ms [1112ms] [1867] gc(2) 7.470ms [2951ms] [1867] GC(3)一時停止初期マーク(メタデータGCしきい値)149m-> 30m(256m)27.175ms [2951ms] [1867] GC(4)同時サイクル[2972ms] [1867] 5.132ms [2974ms] [1867] GC(4)ライブデータを最終化する0.000ms [2974ms] [1867] Gc(4)一時停止クリーンアップ32m-> 32m(256m)0.214ms [2976ms] [1867] Gc(4)並行サイクル25.422ms
古いGCの関連パラメーターの移行
| レガシーガベージコレクション(GC)フラグ | Xlog構成 | コメント |
|---|---|---|
| g1printheapregions | -xlog:gc+region = trace | 適用できない |
| gclogfilesize | 構成はありません | ログの回転は、フレームワークによって処理されます。 |
| numberofgclogfiles | 適用できない | ログの回転は、フレームワークによって処理されます。 |
| printadaptivesizepolicy | -xlog:ergo*= level | ほとんどの情報に対してデバッグのレベルを使用するか、PrintadaptiveSizePolicyに記録されたものすべてにトレースのレベルを使用します。 |
| printgc | -XLOG:GC | 適用できない |
| printgcapplicationconcurrenttime | -xlog:SafePoint | printgcapplicationCurrentTimeおよびprintgcapplicationStoppedtimeは同じタグに記録され、新しいロギングで分離されていないことに注意してください。 |
| printgcapplicationStoppedtime | -xlog:SafePoint | printgcapplicationCurrentTimeおよびprintgcapplicationStoppedTimeは同じタグに記録され、新しいロギングでは分離されていないことに注意してください。 |
| printgccause | 適用できない | GCの原因は常にログに記録されています。 |
| printgcdateStamps | 適用できない | 日付スタンプはフレームワークによって記録されます。 |
| printgcdetails | -xlog:gc* | 適用できない |
| printgcid | 適用できない | GC IDは常にログに記録されています。 |
| printgctasktimestamps | -xlog:task*= debug | 適用できない |
| printgctimestamps | 適用できない | タイムスタンプはフレームワークによって記録されます。 |
| Printheapatgc | -xlog:gc+heap = trace | 適用できない |
| printreferencegc | -xlog:ref*= debug | 古いロギングでは、printgcdetailsも有効になった場合にのみ、printreferencegcが効果があることに注意してください。 |
| printStringDeduplicationStatistics | -xlog:stringdedup*= debug | 適用できない |
| printtenuringDistribution | -xlog:age*= level | 最も関連性の高い情報にはデバッグのレベル、またはPrinttenuringDistributionのためにログに記録されたもののトレースのレベルを使用します。 |
| usegclogfilerotation | 適用できない | PrinttenuringDistributionのために何が記録されましたか。 |
レガシーランタイムパラメーターの移行
| レガシーランタイムフラグ | Xlog構成 | コメント |
|---|---|---|
| TraceExceptions | -xlog:例外=情報 | 適用できない |
| TraceClassloading | -xlog:class+load = level | 通常の情報にレベル=情報を使用、または追加情報にはレベル=デバッグを使用します。 Unified Logging Syntax、-verbose:class Equals -xlog:class+load = info、class+unload = info。 |
| traceClassloadingPreOrder | -xlog:class+preorder = debug | 適用できない |
| TraceClassunloading | -xlog:class+unload = level | レベル=情報を通常の情報に使用するか、レベル=トレースを追加情報に使用します。 Unified Logging Syntax、-verbose:class Equals -xlog:class+load = info、class+unload = info。 |
| 冗長化 | -xlog:検証=情報 | 適用できない |
| TraceClassPaths | -xlog:class+path = info | 適用できない |
| トレースクロスソリューション | -xlog:class+resolve = debug | 適用できない |
| トレセクラシアル化 | -xlog:class+init = info | 適用できない |
| Traceloaderconstraints | -xlog:class+loader+constraints = info | 適用できない |
| TraceClassLoaderData | -xlog:class+loader+data = level | レベル=デバッグを使用して、通常の情報またはレベル=トレースを追加します。 |
| tracesafpointcleanuptime | -xlog:SafePoint+cleanup = info | 適用できない |
| TracesAfpoint | -xlog:safepoint = debug | 適用できない |
| tracemonitorinflation | -XLOG:MonitorInFlation = debug | 適用できない |
| TraceBiasedLocking | -xlog:biasedlocking = level | レベル=情報を通常の情報に使用するか、レベル=トレースを追加情報に使用します。 |
| traceredefineclasses | -xlog:Redefine+class*= level | level = info、= debug、および= traceは、増加する量の情報を提供します。 |
Java9はまた、GCログの選択と出力をXlogに統合し、職員が与えられた移行テーブルに従って移行することができます。