java性能监控

本文详细介绍如何使用JDK自带的命令行工具进行Java性能监控,包括查看进程、配置、GC及编译信息,以及如何利用jmap和MAT分析内存泄漏,最后通过jstack和JVisualVM监控线程和远程进程。

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添加监控

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值