用户工具

站点工具


arthas
# 下载
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'
arthas.txt · 最后更改: 2020/09/22 04:14 由 plough