Java诊断工具【Arthas】

5 篇文章 0 订阅
5 篇文章 0 订阅

官网地址:https://gitee.com/arthas/arthas

命令介绍
dashboard当前系统的实时数据面板
thread查看当前 JVM 的线程堆栈信息
watch方法执行数据观测
trace方法内部调用路径,并输出方法路径上的每个节点上耗时
stack输出当前方法被调用的调用路径
tt方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测
monitor方法执行监控
jvm查看当前 JVM 信息
vmoption查看,更新 JVM 诊断相关的参数
sc查看 JVM 已加载的类信息
sm查看已加载类的方法信息
jad反编译指定已加载类的源码
classloader查看 classloader 的继承树,urls,类加载信息
heapdump类似 jmap 命令的 heap dump 功能

 

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar  [pid]

利用watch命令,监听指定的方法,-x 参数可以指定打印入参和返回值的深度,第四个参数是条件表达式,过滤数据

watch com.baidu.xxxclass  xxxMethod {params,returnObj} params[1]==77777 -x 3

通过jad来反编译Main Class

jad demo.MathGame

sc查找类   

sc *Math*

sm查找方法

sm demo.MathGame*

使用 trace 命令可以跟踪统计方法耗时

trace com.UserController getUser

使用 ognl 命令,ognl 表达式可以轻松操作想要的信息:例如查看累的static属性,还可以操作

ognl '@com.Arthas@hashSet'

ognl '@com.Arthas@hashSet.size()'

ognl  '@com.Arthas@hashSet.add("test")'

ognl  '@com.Arthas@hashSet' | grep test

 

使用 thread查看所有线程信息,同时会列出每个线程的 CPU 使用率,可以看到图里 ID 为12 的线程 CPU 使用100%。
 

thread
thread  [id]

#寻找 CPU 使用较高的线程
thread -n [显示的线程个数]

#查看线程池里线程信息
thread | grep pool 

#查看直接定位到死锁信息
thread -b 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值