标签:erro 标准 属性 输出 诊断 次数 err png 令行
Boolean类型
格式:-XX:[+-]<name>表示启用或禁用name属性
比如:
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
非Boolean类型
格式:-XX:<name>=<value> 表示name属性的值是value
比如:
-XX:MaxGCPauseMilis=500
XX:GCTimeRatio=19
-XX:+PrintFlagsInitial //查看初始值
-XX:+PrintFlagsFinal //查看最终的值
-XX:+UnlockExperimentalVMOptions //解锁实验参数
-XX:+UnlockDiagnosticVMOptions //解锁诊断参数
-XX:+PrintCommandLineFlags //打印命令行参数
=表示默认值
:=被用户户或者JVM修改后的值
查看java进程,类似Linux 中的ps
jinfo -flag MaxHeapSize xxxx(进程号) //查看最大堆内存
jinfo -flag UseConcMarkSweepGC xxx(进程号) //查看是否使用了这个GC
jinfo -flag UseG1GC xxx(进程号) //是否使用了G1回收器
jinfo -flag UseParallelGC xxx(进程号) //是否使用了并行回收器
命令格式:
options:-class,-compiler,-gc,-printcompilation
查看类加载信息:
jstat -class xxx(进程号)
说明:
3176(进程号)
1000(1000毫秒,没隔1秒)
10(一共输出10次)
3176这个进程,没隔1s输出一次,一共输出10次
-gc/-gcutil/-gccause/-gcnew/-gccold
S0C/S1C/S0U/S1U:S0和S1的总量与使用量
EC/EU:Eden区总量和使用量
OC/OU:Old区总量与使用量
MC/MU:Metaspace区总量与使用量
CCSC/CCSU:压缩类空间总量与使用量
YGC/YGCT:youngGC的次数与时间
FGC/FGCT:FullGC的次数与时间
GCT:总的GC时间
jstat -gc xxx(进程号) 1000 10 //动态输出,没隔1s输出一次,一共输出10次
jstat -compiler PID
jstat -printcompilation PID
设置两个参数:
-XX:+HeapDumpOnOutOfMemoryError //开启功能
-XX:HeapDumpPath=./ //导出到什么路径
jmap -dump:format=b,file=help.hprof
format=b 导出的格式是二进制的文件
线程的状态:
1、new
2、running
3、blocked
4、waiting
5、timed_waiting
6、terminated
top //查看laod average,发现cpu非常高;
top -p PID -H #查看某个进程内部线程占用情况
发现有5个线程占用的cpu非常高:
printf "%x" 8247
2037
在之前步骤里导出的jstack信息的文件中,搜索上个步骤转换出来的十六进制PID
0x2037 表示一个十六进制的数:2037
搜索出来之后,就能够看到该线程的堆栈信息了
查看项目进程号
ps -ef | grep tomcat
拉取到文末
该分析工具能准确的找到项目中存在的的死锁和位置
标签:erro 标准 属性 输出 诊断 次数 err png 令行
原文地址:https://www.cnblogs.com/xujie09/p/jvm.html