跳转至

Arthas 实现原理

一、是什么

阿里巴巴开源的 Java 诊断工具,在线诊断,不用重启。

二、能做什么

  • 看方法调用、耗时。
  • 看 JVM 信息。
  • 反编译类。
  • dump heap。
  • 监控方法异常。

三、原理

1. Java Agent

Arthas 以 Java Agent 附加到目标 JVM:

arthas-boot.jar

2. Attach API

VirtualMachine.attach(pid)

连接到运行中的 JVM。

3. ByteBuddy 字节码增强

方法被调用时,插入统计逻辑: - 记录耗时。 - 记录入参/出参。 - 抛异常时记录。

4. 不修改代码

通过 Instrumentation.retransformClasses(),在运行时重新定义类。

四、核心命令

命令 作用
dashboard 实时面板
thread 线程栈
jad 反编译
watch 方法入参出参
trace 方法调用链耗时
profiler 火焰图

五、为什么不用重启

Attach API 允许运行时加载 agent,重新定义类。业务无感。

六、注意

  • 生产用要小心,字节码增强有开销。
  • 用完 shutdown。

一句话

Arthas = Java Agent + Attach API + 字节码增强。