- arthas下载安装(linux)
curl -0https://alibaba.github,io/arthas/arthas-boot.jar
- arthas卸载(linux)
rm -rf ~/.arthas/ 安装主目录
rm -rf ~/logs/arthas 日志记录目录
- 安装前的准备:必须运行一个Java进程,或者是运行一个Java程序,或者是启动你的idea,都算是启动了一个Java进程,Arthas启动的时候会检测这个进程,否则就会报下面的问题。
java -jar arthas-boot.jar
- 如果端口号被占用,也可以通过以下命令换成另一个端口号执行
java -jar arthas-boot.jar --telnet-port 9998 --http-port -1
- 使用arthas命令必须要进行对应程序当中
基本命令
- 通过thread命今来获取到arthas-demo进程的Main Class
thread 没有线程id,跟dashboard作用基本一样
thread 1 会打印线程ID 1的栈
thread -n 3 展示当前最忙的前3个线程并打印堆栈
thread b 找出当前阻寨其他线程的线程,有时候我们发现应用卡住了,通常是由于
某个线程拿住了某个锁,并且其他线程都在等待这把锁造成的。 为了排
查这类问题,arthas提供了thread -b, 一键找出那个罪魁祸首。
thread --state WAITING 查看处于等待状态的线程
- 通过jad来反编译看源码
格式
jad 包名.类名 打印这个类下面的所有方法
jad 包名.类名 方法名 打印这个类下面的这个方法
- 通过watch命令来查看方法的的返回值
watch 包名.类名 方法名 returnObj 返回值 --controller层一般不使用
- 退出arthas
如果只是退出当前的连接,可以用quit 或者exit命令。Attach到目标进程上的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出arthas,可以执行stop命令。
- watch
watch 包名.类名 方法名 returnObj 返回值 --controller层一般不使用
举例
params表示所有参数数组(因为不确定是几个参数),returnObject表示返回值
watch demo.MathGame primeFactors "{params,returnObj}" -x 2
语法:watch 包名.类名 方法 "{params,returnObj}" -x 2 params:可以表示多个也可以表示单个。
- 退出watch
按Q或者ctrl+c退出
- jar命令
反编译指定已加载类源码
jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理
解业务逻辑;
在 Arthas Console 上,反编译出来的源码是带语法高亮的,阅读更方便
当然,反编译出来的 java 代码可能会存在语法错误,但不影响你进行阅读理解