Arthas 核心使用场景

Arthas 是阿里开源的 Java 在线诊断工具,无需重启服务、无需修改代码、不侵入业务,直接在线排查生产/测试环境问题。

下面整理最常用、最实用的 8 大使用场景,覆盖 90% 开发/运维排查需求:


1. 生产环境查看实时代码(不用重启、不用发布)

场景

  • 线上代码和本地不一致?
  • 不知道当前 JVM 加载的是哪个版本的 class?
  • 想确认某个方法逻辑是否正确?

命令

bash 复制代码
# 反编译查看类代码
jad com.example.service.UserService

# 只查看某个方法
jad com.example.service.UserService getUserById

价值

直接看到 JVM 里正在运行的真实代码,瞬间定位"代码没生效"的问题。


2. 方法耗时排查(接口慢、函数卡顿)

场景

  • 接口 RT 高,但不知道哪一步慢
  • 想监控某个方法的入参、出参、异常、耗时

命令

bash 复制代码
# 监控方法执行:耗时、入参、返回值、异常
watch com.example.service.UserService getUserById '{params,returnObj,throwExp,cost}'

# 查看方法调用链路、每一步耗时
trace com.example.service.UserService getUserById

价值

1 分钟定位性能瓶颈,不用加日志、不用改代码。


3. 热更新代码(线上紧急修复)

场景

  • 线上有个小 Bug(空指针、判断错误),不想重启服务
  • 临时修复逻辑,验证是否正确

命令

bash 复制代码
# 1. 反编译保存源码
jad --source-only com.example.service.UserService > /tmp/UserService.java

# 2. 编辑修改
vim /tmp/UserService.java

# 3. 热加载替换
mc /tmp/UserService.java -d /tmp
redefine /tmp/com/example/service/UserService.class

价值

不重启服务,在线修复 Bug,适合生产紧急场景。


4. 排查方法没有执行/不生效

场景

  • 接口调用了,但方法没进去?
  • 条件分支没走?
  • AOP/拦截器没生效?

命令

bash 复制代码
# 监听方法是否被调用
monitor com.example.service.UserService getUserById

# 追踪方法调用堆栈
stack com.example.service.UserService getUserById

价值

快速确认:方法到底有没有被调用、谁调用的、为什么没执行


5. 查看 Spring Bean / 配置信息

场景

  • 想知道 Spring 容器里某个 Bean 是否存在
  • 查看 Bean 的属性值(如配置、地址、开关)

命令

bash 复制代码
# 查看 Spring Bean
springBean list

# 查看某个 Bean 的属性
getstatic com.example.service.UserService userMapper

价值

不用加日志,直接在线查看 Bean 状态


6. JVM 问题排查(内存、线程、GC)

场景

  • CPU 占用高
  • 线程死锁
  • 频繁 GC、OOM 前排查

命令

bash 复制代码
# 查看 JVM 概览
dashboard

# 查看线程(死锁、CPU 高占用)
thread
thread -b  # 查死锁
thread -n 3 # 查 CPU 最高的 3 个线程

# 查看 GC 情况
gc

价值

生产环境 JVM 问题一键定位,比 jstack/jstat 好用太多。


7. 类冲突、Jar 包冲突

场景

  • NoSuchMethodError
  • ClassNotFoundException
  • 多个 Jar 包版本冲突

命令

bash 复制代码
# 查看类是从哪个 Jar 加载的
sc -d com.example.service.UserService

# 排查类冲突
classloader -l

价值

快速定位:JVM 加载的是哪个 Jar 包的类


8. 在线调试:查看入参、返回值、异常

场景

  • 线上报错,但日志没打全
  • 想看到真实入参、返回值、异常堆栈

命令

bash 复制代码
# 最常用:参数 + 返回值 + 异常 + 耗时
watch com.example.service.UserService * '{params, returnObj, throwExp}' -x 2

价值

不用加日志,实时看到方法完整调用信息


总结:什么时候该用 Arthas?

只要你遇到下面这些情况,直接上 Arthas

  1. 代码和线上不一致
  2. 接口慢、方法耗时高
  3. 方法不执行、不生效
  4. 生产需要紧急热修复
  5. CPU/GC/线程异常
  6. Jar 包冲突、类加载问题
  7. 想看实时入参、出参、异常

一句话记住

Arthas = 生产环境 Java 问题在线诊断神器

无需重启、无需日志、无需发布,在线定位一切问题

相关推荐
真实的菜1 小时前
Java 微服务优雅停机:从踩坑到最佳实践
java·微服务·linq
1104.北光c°1 小时前
深度剖析 Spring 灵魂:IOC 容器与自动装配的原理、设计与实现
java·开发语言·笔记·后端·spring·rpc·ioc
爱吃羊的老虎1 小时前
【JAVA】Java微服务—阿里开源的服务注册中心 + 配置中心Nacos
java·微服务·开源
傻啦嘿哟1 小时前
日志分析:利用OpenClaw日志排查“403”和“503”错误
java·git·github
Volunteer Technology1 小时前
Spring6.0新特性
java·开发语言·spring
装不满的克莱因瓶1 小时前
深入理解 Redisson 原理:Redis 不只是缓存,更是分布式协调器
java·redis·分布式·架构·分布式锁·redisson
pixelpilot11 小时前
微软常用运行库directx修复工具(directx repair)2026版directx下载下载安装教程
java·开发语言·其他·microsoft
码luffyliu2 小时前
企业级多agent知识库系统|超值源码+资料
java·agent·秋招·实习·rag·知识库系统
wang09072 小时前
自己动手写一个spring之IOC_1
java·后端·spring