常用Java分析及调优工具

一、Greys

Greys是专业的JVM的业务问题定位工具

1、下载与安装
wget http://ompc.oss.aliyuncs.com/greys/release/greys-stable-bin.zip
unzip greys-stable-bin.zip
cd greys
sh ./install-local.sh
2.启动与参数
./greys.sh [@IP:PORT]

默认只写pid时,IP为127.0.0.1 PORT为3658,IP:PORT形式一般用于远程协助
进入交互页面,输入help可查看命令
详细参数说明:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf

3.常用命令

(1)monitor命令:对某类的方法调用进行监控

monitor -c 10 ClassA MethodB

每十秒统计一次ClassA.MethodB 的调用情况,包括调用总数,成功的个数,失败的个数,RT情况等。
这个命令在实时流处理的程序中非常好用,可以快速定位问题,而无需增加打印信息和重启流处理进程

(2)trace命令:能方便的帮助你定位和发现因RT高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路

trace -n 10 ClassA MethodB

打印10次ClassA.MethodB的调用链路及RT,其中[2,1ms]表示当前节点的整体耗时2ms,当前节点在当前步骤的耗时1ms

(3)watch命令:能观察到指定方法的调用情况。能观察到的范围为:返回值、抛出异常、入参

watch -b ClassA MethodB '"params[0]="+params[0]'

打印每次调用ClassA.MethodB之前的第一个参数的值

watch -s xxx.expand.ParseProducer parse returnObj -x 1

打印每次调用ClassA.MethodB之后的返回的结果的层级遍历

二、jstat

jstat是JDK自带的性能分析工具,主要用来实时查看JVM堆内各个部分的使用量
常用命令为:jstat -gcutil 30476 5000
30476为pid 5000为间隔时间,结果如下图:


image.png

下面为每个部分代表的意义

内容 意义
S0 Survivor0区使用百分比
S1 Survivor1区使用百分比
E Eden区使用百分比
O Old区使用百分比
P Perm区使用百分比
YGC Young Generation Minor GC 的数目
YGCT Young Generation Minor GC 的时间
FGC Old Generation Full GC 的数目
FGCT Old Generation Full GC 的时间
GCT YGCT+FGCT

三、jmap

主要用来得到运行java程序的内存分配的详细情况。
常用命令有两个:
(1) 打印heap的概览情况和使用情况,和jstat -gcutil类似

jmap -heap 

(2) 打印堆内存中对象的数量及大小,可用来实时查看哪些对象占用资源过度。

jmap -histo  | head -n 23

你可能感兴趣的:(常用Java分析及调优工具)