下载arthas-boot.jar,然后用java -jar的方式启动:
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
查看方法内部执行堆栈
方法内部调用路径,并输出方法路径上的每个节点上耗时
trace com.xxx.manage.impl.UserServiceImpl getUser
查看方法出入参
watch com.xxx.manage.impl.UserServiceImpl getUser '{params,returnObj,throwExp}' -x 3
查找类的 classLoaderHash
sc -d com.xxx.manage.util.SpringContext
执行类的方法
ognl -c 31221be2 '@com.xxx.manage.util.SpringContext@getBean("userService")' -x 1
获取spring配置
ognl -c 31221be2 '#context=@com.xxx.manage.util.SpringContext@applicationContext,#context.getEnvironment().getProperty("ca.enable")'
或者
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod
tt -i 1000 -w 'target.getApplicationContext().getBean("baiduSchedule").startSchedule()'
查看方法被调用堆栈
很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。
stack com.xxx.manage.impl.UserServiceImpl getUser
查看最高占用的线程
thread -n 3
查看当前JVM的系统属性
sysprop
查看当前JVM的环境属性
sysenv
查看,更新VM诊断相关的参数
vmoption