使用java -jar arthas-boot.jar命令启动arthas,arthas会弹出本机运行的所有java程序和对应的编号,选择对应的编号,即可attach对应的java程序,通过命令对此java程序进行分析
dashboard
显示当前系统实时数据面板,包括当前系统各个进程,他们的状态,占用cpu,内存, 环境变量等
thread
查看当前jvm的线程堆栈信息
指定采样时间间隔,每过1000毫秒采样,显示最占时间的3个线程:
thread -i 1000 -n 3
查看处于等待状态的线程:
thread --state WAITING
jvm
查看jvm相关信息,包括运行时信息(机器名,jvm开启时间,classpath,输入参数等),加载的类的总数,垃圾回收器,内存管理器,内存,操作系统,线程,文件描述符等
sysprop
查看和修改jvm的系统属性,修改直接在key后跟上value即可
查看:sysprop java.home -> C:\Program Files\Java\jre1.8.0_131
修改:sysprop java.home D:\Program Files\Java\jre1.8.0_131
sysenv
查看当前jvm的环境属性
vmoption
查看,更新VM诊断相关的参数,更新直接在key后跟上value即可
getstatic
getstatic 类名 属性名 : 查看类的静态属性
ognl
可以执行ognl表达式
sc(search class)
查看jvm已加载的类信息
sm(search method)
查看已加载类的方法信息,只能看到由当前类所声明的方法,父类方法无法看到
jad
jad java.lang.String 把字节码文件反编译成源代码
mc
mc /root/Hello.java 在内存中把源代码编译成字节码文件
redefine
把新生成的字节码文件在内存中执行,一般redefine会和前面的jad,mc命令三个一起使用
dump
dump java.lang.String 将已加载类的字节码文件保存到特定目录
classloader
获取类加载器的信息
monitor
monitor java.lang.String equals 监控一个时间段中指定类中方法的执行次数,成功次数,失败次数等
watch
观察指定方法的调用情况,范围有:返回值,抛出异常,入参,出参(入参在方法内部被修改后的值)通过编写ognl表达式进行对应变量的查看
[n] 设置命令执行的次数
#cost 方法执行耗时
trace
对方法内部的调用路径进行追踪,并输出方法路径上的每个节点上的耗时
stack
输出方法被调用的路径
tt
记录下指定方法每次调用的入参和返回信息,并能对这些不同时间下调用的信息进行观测
profiler
生成火焰图,本质上是通过不断的采样,然后把收集到的采样结果生成应用热点的火焰图