TECH NOTES / 开发工具

Arthas 使用笔记

原笔记 2022-02-10 · 整理于 2026-10-05

Arthas 的资料与常用诊断命令,记录运行中 Java 应用的排查思路。

开源地址:https://github.com/alibaba/arthas\ 官方文档:https://alibaba.github.io/arthas\ 参考博客:https://blog.csdn.net/monokai/article/details/107457772\ Arthas 脑图—常用命令汇总: https://github.com/alibaba/arthas/issues/1003

Arthas 热更新实验

原笔记使用 Arthas 3.3.6。下面整理原来的命令顺序,用于理解反编译、编译与重新加载之间的关系;请先在测试环境验证。运行中的类被替换,不等于源码和部署包已更新,后续仍需正常发布。

在已经连接目标 JVM 的 Arthas 控制台中导出源码:

text
jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.java

在系统终端编辑导出的文件,再回到 Arthas 查询真实的 ClassLoader 标识:

text
sc -d *UserController

用查询到的值替换 CLASSLOADER_HASH 后编译:

text
mc -c CLASSLOADER_HASH /tmp/UserController.java -d /tmp

确认生成类和加载器对应,再按所用版本文档决定使用 retransform 或 redefine。类结构修改存在限制,不能把它当作任意代码都能生效的通用热部署。

推荐使用 retransform 命令

https://arthas.aliyun.com/doc/redefine.html

相关文章:

教学视频

文章配图