一:JVM调优命令
-
Jinfo
-
查看正在运行的java应用程序的扩展参数
-
查看jvm参数 Jinfo -flags Tomcat进程id
-
查看Java系统参数 Jinfo -sysprops Tomcat进程id
-
-
Jstat
-
详细查看jvm数据,查看堆内存使用量,以及加载类的数量
-
jstat -class 进程id 加载类的数量
-
jstat -gc 进程id 垃圾回收统计
-
S0C:第一个幸存区的大小
-
S1C:第二个幸存区的大小
-
S0U:第一个幸存区使用的大小
-
S1U:第二个幸存区使用的大小
-
EC:Eden区的大小
-
OC:老年代的大小
-
OU:老年代使用的大小
-
MC:方法区的大小(元空间)
-
MU:方法区的使用大小
-
CCSC:压缩类空间大小
-
CCSU:压缩类空间使用大小
-
YGC:年轻代垃圾回收次数
-
YGCT:年轻代垃圾回收的消耗时间
-
FGC:老年代垃圾回收次数
-
FGCT:老年代垃圾回收的消耗时间
-
GCT:垃圾回收消耗总时间
-
-
jstat -gccapacity 进程id 堆内存统计
-
NGCMN:新生代最小容量
-
NGCMX:新生代最大容量
-
NGC:当前新生代容量
-
OGCMN:老年代最小容量
-
OGCMX:老年代最大容量
-
OGC:当前老年代大小
-
OC:老年代大小
-
MCMN:最小元数据空间
-
MCMX:最大元数据空间
-
MC:当前元数据空间
-
CCSMN:最小压缩类空间
-
CCSMX:最大压缩可空间
-
CCSC:当前压缩类空间大小
-
-
jstat -gcnew 进程id 新生代垃圾统计
-
TT:对象在新生代存活的次数
-
MTT:对象在新生代存活的最大次数
-
DSS:期望的幸存区的大小
-
-
jstat -gcnewcapacity 进程id 新生代内存统计
-
jstat -gcold 进程id 老年代垃圾回收统计
-
jstat -gcoldcapacity 进程id 老年代内存统计
-
jstat -gcmetacapacity 进程id 元空间大小
-
jstat -gcutil 进程id
-
-
Jmap
-
Jmap -histo 进程id > ./log.txt 把内存信息输出到文件里 查看内存信息
-
num:序号
-
instance:实例数量
-
bytes:占用空间大小
-
class name:类名称
-
-
jmap -heap 进程id 堆信息
-
jmap -dump:format =b.file=eureka.hprof 进程id 堆内存dump 导出dump文件放入jvisualvm工具中
-
-
Jstack
-
-Xms 10M -Xmx 10M -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError
-
-XX:HeapDumpPath=D:\jvm.dump
-
-
远程连接jvisualvm
-
启动普通的jar程序 JMX端口配置:
-
java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar foo.jar
-
-
Tomcat配置
-
JAVA_POTS=-Dcom.sun.management.jmxremote.port=8889 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
-
-
-
jstack找出占用CPU很高的堆栈信息
-
top -p 进程id 显示你的java进程的信息
-
按H 获取你的每个线程的内存情况
-
找到内存和CPU占用最高的线程tid
-
转为十六进制
-
执行jstack tid|grep -A 10 十六进制 得到前十行
-
查看堆栈信息找出出问题的代码
-
转载:https://blog.csdn.net/weixin_44307391/article/details/101314285