JVMパラメータの種類
標準的なパラメータ
- -助けて
- -server -client
- -version -showversion
- -cp -classpath
X-パラメータ
- -Xint:解釈
- -Xcomp:初めてのネイティブコードにコンパイル
- -Xmixed:混合モードは、JVMは、ネイティブコードにコンパイルされたか否かを判断します
XXパラメータ
機能
- 非標準化パラメータ
- 比較的不安定
- 主にチューニングし、JVMのデバッグのために
分類
ブールタイプ
格式:-XX:[+-]<name>表示启用或禁用name属性 比如: -XX:+UseConcMarkSweepGC -XX:+UseG1GC
非ブール型の
格式:-XX:<name>=<value> 表示name属性的值是value 比如: -XX:MaxGCPauseMilis=500 XX:GCTimeRatio=19
例
- -XXに相当-Xms:InitialHeapSizeは//ヒープサイズを初期化します
- -XXに相当-Xms:MaxHeapSize //最大ヒープサイズ
JVMの実行時パラメータの表示
-XX:+PrintFlagsInitial //查看初始值
-XX:+PrintFlagsFinal //查看最终的值
-XX:+UnlockExperimentalVMOptions //解锁实验参数
-XX:+UnlockDiagnosticVMOptions //解锁诊断参数
-XX:+PrintCommandLineFlags //打印命令行参数
PrintFlagsFinal
=デフォルトを示します
:ユーザーまたはユーザーJVMによって改変=値
JPS
Linuxのpsのと同様の図のJavaプロセス、
Jinfoの
jinfo -flag MaxHeapSize xxxx(进程号) //查看最大堆内存
jinfo -flag UseConcMarkSweepGC xxx(进程号) //查看是否使用了这个GC
jinfo -flag UseG1GC xxx(进程号) //是否使用了G1回收器
jinfo -flag UseParallelGC xxx(进程号) //是否使用了并行回收器
JSTATビュー仮想マシンの統計
フォーマット:
options:-class,-compiler,-gc,-printcompilation
クラスローダ
ビュークラスローダ情報:
jstat -class xxx(进程号)
说明:
3176(进程号)
1000(1000毫秒,没隔1秒)
10(一共输出10次)
3176这个进程,没隔1s输出一次,一共输出10次
ガーベジコレクション
-gc / -gcutil / -gccause / -gcnew / -gccold
-gc出力
S0C / S1C / S0U / S1U:S0とS1との合計量
EC / EU:総面積とエデンの量
OC / OU:旧地区の総量
MC / MU:総量領域メタスペース
CCSC / CCSU:スペースの総量の圧縮
YGC / YGCT:youngGCの数と時間
FGC / FGCT:FullGCの数と時間
GCT:総GC時間
使用
jstat -gc xxx(进程号) 1000 10 //动态输出,没隔1s输出一次,一共输出10次
JITコンパイラ
ビューJITコンパイラ情報
jstat -compiler PID
jstat -printcompilation PID
jmapの+ MAT戦闘メモリオーバーフロー
JVMのメモリ構造
メモリマップドファイルをエクスポートする方法
メモリオーバーフローが自動的にエクスポート
设置两个参数:
-XX:+HeapDumpOnOutOfMemoryError //开启功能
-XX:HeapDumpPath=./ //导出到什么路径
手動jmapのをエクスポートするコマンドを使用します
jmap -dump:format=b,file=help.hprof
format=b 导出的格式是二进制的文件
メモリのオーバーフローのMAT分析
- ダウンロードMATツール
- 分析用のマットにエクスポートした画像ファイル
デッドロックとjstack実際の無限ループ
スレッドの状態:
1、新しいです
2、ランニング
3、ブロックされました
4、待っています
5、TIMED_WAITING
6、終了
高いCPU彪もたらす実際の無限ループ
- ビューのCPU負荷:
top //查看laod average,发现cpu非常高;
- トップリスト中のCPU使用率が高いプロセスを探します
- 情報のプロセスをxxx.txtファイルへjstack PID> xxx.txt、プリントjstack
- 分析のための占有スレッドを処理するための内部リソース:
top -p PID -H #查看某个进程内部线程占用情况
5つのスレッドは、CPUが非常に高い占有が見つかりました:
- 図アウトPID(10進数)進変換の分析:
printf "%x" 8247
2037
jstack情報の輸出のステップの前に文書では、進PIDの変換の最後のステップを探し出します
2037:0x2037は16進数を表します
うち検索した後、あなたはスタック情報のスレッドを見ることができます
実際のCPUが舞い上がる原因デッドロック
ViewプロジェクトのプロセスID
ps -ef | grep tomcat
- 情報のプロセスをxxx.txtファイルへjstack PID> xxx.txt、プリントjstack
テキストの終わりを引っ張ります
分析ツールは、正確にデッドロックと場所の存在下でプロジェクトを見つけることができます