# 下载
wget https://alibaba.github.io/arthas/arthas-boot.jar
# 启动
java -jar arthas-boot.jar --target-ip 0.0.0.0
# 帮助
help
# 查看系统实时数据面板
dashboard
# 打印线程 id1 的堆栈
thread 1
# 查找 JVM 中已加载的类
sc -d *MathGame
# 反编译代码
jad demo.MathGame
# 查看方法的返回值
watch demo.MathGame primeFactors returnObj
# 彻底退出
stop
===== 查看 JVM 信息 =====
# 打印所有的 System Properties 信息
sysprop
# 指定单个 key
sysprop java.version
# 设置新的 value
sysprop testKey testValue
# 获取环境变量
sysenv
# 打印 JVM 的各种详细信息
jvm
===== Tips =====
# 快捷键
keymap
# 历史命令
history
# pipeline
sysprop | grep java
sysprop | wc -l
===== watch 相关 =====
==== 返回值表达式 ====
* loader
* clazz
* method
* target
* params
* returnObj
* throwExp
* isBefore
* isThrow
* isReturn
可以利用这些内置对象来组成不同的表达式。比如返回一个数组:
watch com.example.demo.arthas.user.UserController * '{params[0], target, returnObj}'
==== 条件表达式 ====
watch命令支持在第4个参数里写条件表达式,比如:
watch com.example.demo.arthas.user.UserController * returnObj 'params[0] > 100'
==== 异常时捕获 ====
watch命令支持-e选项,表示只捕获抛出异常时的请求:
watch com.example.demo.arthas.user.UserController * "{params[0],throwExp}" -e
==== 按照耗时进行过滤 ====
watch命令支持按请求耗时进行过滤,比如:
watch com.example.demo.arthas.user.UserController * '{params, returnObj}' '#cost>200'