dashboard
输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行
ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应
NAME: 线程名
GROUP: 线程组名
PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
STATE: 线程的状态
CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
TIME: 线程运行总时间,数据格式为分:秒
INTERRUPTED: 线程当前的中断位状态
DAEMON: 是否是daemon线程
2.jad反编译指令
输入:jad + 文件全路径,如我想查看主启动类,则:
3.thread
最忙的前N个线程并打印堆栈
所有线程的信息
指定线程的运行堆栈
如上有线程ID为37的,所以这里指明id=37
当前阻塞其他线程的线程
无阻塞返回
有阻塞返回
注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持。
指定采样时间间隔
查看指定状态的线程
thread –state
状态:[RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, NEW, TERMINATED]
4.watch
查看方法耗时出参
如我有这样一个方法:
则指令为:
Java
运行代码
复制代码
1
watch com.arthas.controller.ArthasController arthasTest returnObj
查看指定方法入参出参
Shell
运行代码
复制代码
1
watch com.arthas.controller.ArthasController arthasTest "{params,returnObj}" -x 2
观察异常信息
5.退出Arthas
如果只是退出当前的连接,可以用quit或者exit命令。Attach到目标进程上的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出arthas,可以执行stop命令。