JVM的参数类型
标准参数
-help
-server -client
-version -showversion
-cp - classpath
X参数
-Xint:解释执行
-Xcomp:第一次使用就编译本地代码
-Xmixed:混合模式,JVM自己决定是否要编译成本地代码
XX参数
* Boolean 类型
格式:-XX:[+-] name表示启用或者禁用name属性
比如:-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
* 非Boolean类型
格式: -XX:<name> = <value>
比如:-XX:MaxGCPauseMills=500
-XX:GCTimeRadio=19
运行时JVM参数查看
-XX:+PrintFlagsInitial
-XX:PrintFlagsFinal
* jps & ps
jps -l
* jinfo
jinfo -flags pid
jinfo -flag MaxHeapSize pid 查看最大内存
jinfo -flag UseG1GC pid 查看垃圾回收器
jstat查询虚拟机统计信息
jstat -class pid 1000 10
jstat -gc pid 1000 10
如何导出内存影像文件
1.内存溢出自动导出
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./
2.使用jmap命令手动导出
jmap -dump:format=b,file=dump.hprof pid
jmap + MAT实战内存溢出
常用查看 对象数量,对象的引用
jstack(打印线程)实战死循环与死锁
1.CPU飙升
top 查看负载,如果负载过大,新的请求就接入不进来了
实战:jstack pid > a.txt
sz a.txt 下载到本地
** top -p pid -H **
printf "%x" pid
去文件a.txt中查找对应的16进制数据
2.死锁