java性能监控
jdk命令行工具监控
jps -l
显示系统运行的所有java进程,以及对应进程的打包的包名或者主程序入口类名称
jinfo + pid
显示对应的java进程的系统配置和JVM参数
jstat
查看java进程的class加载信息,编译信息,gc信息
gc统计:jstat -gc 6285 250 4 (每隔250ms打印4次)
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
MC、MU:元空间容量和使用量
CCSC、CCSU压缩类空间(短指针)容量和使用量
YGC、YGCT年轻代回收次数,年轻代回收消耗时间
OGC、OGCT老年代垃圾回收次数,老年代垃圾回收消耗时间
GCT 垃圾回收消耗总时间
编译统计:jstat -compiler 6285
类加载统计:jstat -class 6285
jmap + mat
查看内存的对象
jmap -dump:format=b,file=heap.hprof 6285
使用hprof二进制形式,输出jvm的heap内容到文件heap.hprof
可在/root目录打开heap.hprof文件。
mat:从https://www.eclipse.org/mat/downloads.php下载相应的MemoryAnalyzer分析工具安装
Problem Suspect 分析出可能出现的内存泄露问题
Histogram分析内存中对象的个数和占用空间,选中每个对象右键可选择查看最短的GC ROOTS引用路径。
dominator_tree查看对象占用内存
jstack + pid
查看java进程中线程的详情信息
eg:cpu飙高问题?
top -p pid -H
jstack pid
printf "%x" 十进制的线程id (最耗cpu的线程)
线程十六进制的id和5524.txt中线程的nid相同
eg:死锁
JVisualVM可视化监控
监视本地的java进程
导出堆Dump,也可从外部导入dump文件
监视远程的java进程
配置:
java -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar
eladmin-system-2.3.jar
12345为需要监控的端口,远程机器需要开启
eladmin-system-2.3.jar为程序名称
本机jvisualvm添加监控