JVMシリーズ実用コマンド(jmap、jstat、jstack)
概論コマンドモニタリングが最も便利ですが、最も優れた方法はツールを通じてモニタリングを開くことです.例えば、jconsole、jvisualvmでは、ほとんどの情報があります.また、jvisualvmはリモートモニタリングをサポートしていますが、コマンドを使用する目的を設定する必要があります.
ごみ回収器のタイプとシステムパラメータを取得//jmap-heap pidアプリケーション起動のパラメータを表示//jinfo-flags pid現在の各世代の容量と使用量を表示//jstatFGC、YGCの合計回数と総消費時間//jstat直ちにDumpファイル//jmap-dump:live、file=dump_001.bin PID強制FullGC//jmap-dump:liveデッドロックスレッドを含むスレッドの実行情報の表示//jstack-l pid
jmapコマンド
Heappid:JDKの概要を表示する最良のパラメータ
JVMの主なパラメータ:ゴミ回収器のタイプ、各種ratio、現在の実際のSize、MaxSizeはいくらですか
現在の世代ゾーンの使用状況:Eden、From、To、Oldゾーン、Permゾーン
パラメータ解読
ゴミ回収器:parallel+Concurrent Mark-Sweepヒープ領域MaxSizeは4 G、つまりデフォルトはオペレーティングシステムの1/4,16 G*1/4=4 Gヒープ領域が40%未満、または70%を超えると自動的に古い年代のサイズが調整されます(ただしxmsの構成2 Gを下回ったり、MaxSize 4 Gを上回ったりすることはできません)Perm領域の最大1 G、旧世代(concurrent mark-sweep generation)容量:1715.25 MB若い世代:New Generation+1 Survivor Space=299.5 MB+32.5 MBスタック領域の現在の容量:1715.25+29.5+33.5+33.25=2048 M
dump:スナップショットファイルを生成し、jvisualvmなどのツールを使用してdumpパケットのdumpスタックをファイルに分析し、formatは出力フォーマットを指定し、liveは生きているオブジェクトを指定し、fileはファイル名を指定します.
jmapにはもう1つの追加機能があり、コマンドによってFullGCをトリガーすることができます.例えば、タイミングタスクを実行することができます.ビジネスの低ピーク時に実行すると、自動的にFullGCがトリガーされます.*:liveの前にfull gcが行われるので、liveを持っていれば生きているオブジェクトだけを統計するので、liveをつけないスタックの大きさはliveスタックの大きさより大きいです.
jstatコマンドgc:主にFGC、YGCの合計回数と累積時間を表示スタック内の各世代領域の現在の容量と現在の使用量(現在の容量はMaxCapactiyに等しくなく、現在の容量は条件に応じて動的に調整されている)を表示します.現在の容量はMax容量に等しくないため、定位問題の場合、あまり使用価値がありません.
gcutil:機能はgcと同じですが、パーセンテージ形式で、読み取りがより友好的です.
gccapacity:各世代の現在容量、最大容量、現在使用量などの情報を読み取る
コマンドの使用:
jstack -l pid >> stackLog.log/-lは、スレッドデッドロックを含む情報を表し、現在適用されているスレッド使用情報を出力し、スレッドデッドロックに関する情報を含む
ごみ回収器のタイプとシステムパラメータを取得//jmap-heap pidアプリケーション起動のパラメータを表示//jinfo-flags pid現在の各世代の容量と使用量を表示//jstatFGC、YGCの合計回数と総消費時間//jstat直ちにDumpファイル//jmap-dump:live、file=dump_001.bin PID強制FullGC//jmap-dump:liveデッドロックスレッドを含むスレッドの実行情報の表示//jstack-l pid
jmapコマンド
Heappid:JDKの概要を表示する最良のパラメータ
JVMの主なパラメータ:ゴミ回収器のタイプ、各種ratio、現在の実際のSize、MaxSizeはいくらですか
現在の世代ゾーンの使用状況:Eden、From、To、Oldゾーン、Permゾーン
パラメータ解読
ゴミ回収器:parallel+Concurrent Mark-Sweepヒープ領域MaxSizeは4 G、つまりデフォルトはオペレーティングシステムの1/4,16 G*1/4=4 Gヒープ領域が40%未満、または70%を超えると自動的に古い年代のサイズが調整されます(ただしxmsの構成2 Gを下回ったり、MaxSize 4 Gを上回ったりすることはできません)Perm領域の最大1 G、旧世代(concurrent mark-sweep generation)容量:1715.25 MB若い世代:New Generation+1 Survivor Space=299.5 MB+32.5 MBスタック領域の現在の容量:1715.25+29.5+33.5+33.25=2048 M
dump:スナップショットファイルを生成し、jvisualvmなどのツールを使用してdumpパケットのdumpスタックをファイルに分析し、formatは出力フォーマットを指定し、liveは生きているオブジェクトを指定し、fileはファイル名を指定します.
./jmap -dump:live,format=b,file=/usr/developer/huangForBackUp/test20190129.dump 25508
jmapにはもう1つの追加機能があり、コマンドによってFullGCをトリガーすることができます.例えば、タイミングタスクを実行することができます.ビジネスの低ピーク時に実行すると、自動的にFullGCがトリガーされます.*:liveの前にfull gcが行われるので、liveを持っていれば生きているオブジェクトだけを統計するので、liveをつけないスタックの大きさはliveスタックの大きさより大きいです.
jmap -histo:live
jmap -dump:live,file=dump_001.bin PID
jstatコマンドgc:主にFGC、YGCの合計回数と累積時間を表示スタック内の各世代領域の現在の容量と現在の使用量(現在の容量はMaxCapactiyに等しくなく、現在の容量は条件に応じて動的に調整されている)を表示します.現在の容量はMax容量に等しくないため、定位問題の場合、あまり使用価値がありません.
- S0C : survivor0
- S1C : survivor1
- S0U : survivor0
- S1C : survivor1
- EC : Eden
- EU : Eden
- OC : Old
- OU : Old
- PC perm (KB)
- PU perm (KB)
- YGC :
- YGCT :
- FGC :
- FGCT :
- GCT :
gcutil:機能はgcと同じですが、パーセンテージ形式で、読み取りがより友好的です.
gccapacity:各世代の現在容量、最大容量、現在使用量などの情報を読み取る
NGCMN :
NGCMX :
OGCMN :
OGCMX :
OGC: (KB)
OC: (KB)
PGCMN : perm
PGCMX : perm
コマンドの使用:
./jstat -gc 91328
./jstat -gcutil 91328
./jstat -gccapacity 91328
jstack -l pid >> stackLog.log/-lは、スレッドデッドロックを含む情報を表し、現在適用されているスレッド使用情報を出力し、スレッドデッドロックに関する情報を含む