性能监控与调优

JVM的参数类型

标准参数

-help
-server -client
-version -showversion
-cp - classpath

X参数

-Xint:解释执行
-Xcomp:第一次使用就编译本地代码
-Xmixed:混合模式,JVM自己决定是否要编译成本地代码

XX参数

*  Boolean 类型
格式:-XX:[+-] name表示启用或者禁用name属性
比如:-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
*  非Boolean类型
格式: -XX: = 
比如:-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张图片
JVM内存结构

如何导出内存影像文件
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.死锁

你可能感兴趣的:(性能监控与调优)