前言
如何下载、安装、启动 Arthas 可点击此处Arthas在Docker容器中的使用-环境搭建 或 Arthas 官网
1.dashboard
仪表板
ctrl+c
中断执行,退出仪表板cls
清理当前页面,类似clear
Tab
键,可自动补全 arthas 命令
2.thread
查看线程
thread
查看当前进程的所有线程thread ID
查看指定线程ID的线程thread -n 3
展示当前最忙的前3个线程并打印堆栈信息thread -b
找出当前阻塞其它线程的线程,排查死锁thread -i 1000 -n 3
指定采样时间间隔,并展示最忙碌的3个线程thread --state 线程状态
查看处于锁定状态的线程
3.jad 包名.类名
反编译 (需要类被加载到JVM中)
jad 包名.类名
包含有类加载器+位置+源码jad 包名.类名 --source-only
只包含反编译后的源码jad 包名.类名 方法名
反编译指定的方法jad 包名.类名 > 存放路径名
反编译类,并存放在指定的文件下
4.watch
观察指定方法的调用情况
watch 包名.类名 方法名 "{params,returnObj}" -x 2
,监视方法出参和返回值,-x
表示指定输出结果的属性遍历深度,默认为1,params表示所有参数数组,returnObject表示返回值watch 包名.类名 方法名 "{params,returnObj}" -x 2 -b
观察方法入参,-b
表示在方法调用之前观察,此时没有返回值-e
表示在方法异常之后观察,-s
表示在方法返回之后观察,-f
表示方法结束之后(正常返回和异常返回)观察watch 包名.类名 方法名 "target" -x 2
观察当前对象中的所有属性,target
表示当前对象watch 包名.类名 方法名 "target.field_name" -x 2
观察当前对象中的指定属性target.field_name
指定对象中的某个属性watch 包名.类名 方法名 "{params,target,returnObj}" -x 2 -b -s -n 2
同时观察方法调用前和方法返回后,参数-n 2
表示只执行两次。params
表示参数,target
表示执行方法的对象,returnObj
表示返回值
5.退出 arthas
quit
或exit
只是退出当前连接,端口会保持开放stop
结束会话,完全退出 arthas