JVM参数类型
标准参数
标准参数不随着JDK版本变化而变化.
-help -server -client
-version -showversion
-cp -classpathX参数
非标准化参数(在各个JDK版本中可能会变,但是变动比较小)
-Xint : 解释执行
-Xcomp : 编译执行 第一次使用就编译成本地代码
-Xmixed : 混合模式 JVM自己来决定是否编译成本地代码XX参数
非标准化参数主要用于JVM调优和Debug
Boolean类型 :
-XX:+UseG1GC([+]号代表启用,[-]代表禁用)
-XX:+UseConcMarkSweepGC
Key-value类型:
-XX:MaxGcPauseMillis=500
-XX:GCTimeRatio=19
JDK工具
-
jps
jps -q
jps -mlv -
jinfo
语法: jinfo [option] <pid>jinfo -flags pid 打印虚拟机参数(包含使用哪种垃圾回收器)
jinfo -sysprops pid 打印系统参数启动GC输出
jinfo -flag +PrintGC pid
jinfo -flag +PrintGCDetails pid
jinfo -flag +PrintGCTimeStamps pid
jinfo -flag +PrintGCDateStamps pidjinfo -flag MaxHeapFreeRatio=80 注:并不是所有的参数都支持动态修改
-
jstat
语法: jstat [option] <pid>option
-gc -gcutil
-gccapacity -gccause -gcmetacapacity
-gcnew -gcnewcapacity -gcold -gcoldcapacity jstack
cpu高使用
top 查询占用cpu进程
jstack pid> txt 导出堆栈信息
top -p pid -H 查询占用cpu线程
printf "%x" 8247 (10 转16)
注:jstack -l pid 慎用jmap
内存泄漏 jmap -dump:format=b,file=heap.hprof <pid>
mat 分析工具jconsole
-
jvisualvm
远程调用
nohup java -jar -Dcom.sun.management.jmxremote -
Dcom.sun.management.jmxremote.port=12000 -
Dcom.sun.management.jmxremote.authenticate=false -
Djava.net.preferlPv4Stack=true -
Dcom.sun.management.jmxremote.ssl=false -
Djava.rmi.server.hostname=10.18.2.139 demo.jar -spring.profiles.active=test &
远程调试
常见问题分析
- cpu飙升
top
jstack pid> txt
top -p pid -H
printf "%x" 8247 (10 转16)
内存泄漏
jmap -dump:format=b,file=heap.hprof <pid>
mat 分析工具死锁
jconsole
jvisualvm
jstack