https://blog.csdn.net/u013735734/article/details/102930307
运行,并选定监控PID;
- java -jar arthas-boot.jar ;再输入相应PID的序号;
- java -jar arthas-boot.jar [PID] ;
常用命令
1. dashboard 当前系统的实时数据面板

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

使用命令 thread 12 查看 CPU 消耗较高的 12 号线程信息,可以看到 CPU 使用较高的方法和行数(这里的行数可能和上面代码里的行数有区别,因为上面的代码在我写文章时候重新排过版了)。

上面是先通过观察总体的线程信息,然后查看具体的线程运行情况。如果只是为了寻找 CPU 使用较高的线程,可以直接使用命令 thread -n [显示的线程个数] ,就可以排列出 CPU 使用率 Top N 的线程。

定位到的 CPU 使用最高的方法。
使用 thread | grep pool 命令查看线程池里线程信息。

thread -b 命令查看死锁信息
3. watch 方法执行数据观测
查看入参和出参
$ watch com.Arthas addHashSet '{params[0],returnObj}'
查看入参和出参大小
$ watch com.Arthas addHashSet '{params[0],returnObj.size}'
查看入参和出参中是否包含 'count10'
$ watch com.Arthas addHashSet '{params[0],returnObj.contains("count10")}'
查看入参和出参,出参 toString
$ watch com.Arthas addHashSet '{params[0],returnObj.toString()}'
4. trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
trace com.UserController getUser
5. stack 输出当前方法被调用的调用路径
stack com.UserServiceImpl mysql 查看方法的调用信息
6. tt 方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息
并能对这些不同的时间下调用进行观测
7. monitor 方法执行监控
监控统计方法的执行情况;
每5秒统计一次 com.UserServiceImpl 类的 get 方法执行情况。
monitor -c 5 com.UserServiceImpl get
8. jvm 查看jvm信息
9. vmoption 查看,更新 JVM 诊断相关的参数
10.sc 查看 JVM 已加载的类信息
sc -d -f com.Arthas 查看类的字段信息
11.sm 查看已加载类的方法信息
sm 命令查看类的方法信息
sm com.Arthas
12.ognl
ognl 表达式特殊用法( https://github.com/alibaba/arthas/issues/71 )
ognl '@com.Arthas@hashSet' 查看变量的值
ognl '@com.Arthas@hashSet.size()' 查看静态变量 hashSet 大小
ognl '@com.Arthas@hashSet.add("test")' 置值
ognl '@com.Arthas@hashSet' | grep test 查看添加的字符
12. jad 反编译指定已加载类的源码
jad com.Arthas
反编译只显示源码
jad --source-only com.Arthas
反编译某个类的某个方法
jad --source-only com.Arthas mysql