arthas v3.6.9 使用教程
Arthas是一个开源的Java诊断工具,由Alibaba开发和维护。它提供了一套强大的命令行工具,可以帮助开发人员在运行时对Java应用进行故障排查和性能分析。
Arthas具有以下主要功能和特点:
- 实时追踪和查看Java应用的方法调用栈,包括实例、静态方法的调用情况。
- 动态修改类的字节码,比如修改方法的返回值或增加打印语句,以帮助进行调试。
- 监控Java方法的运行时间、调用次数和异常信息。
- 查看JVM的线程信息、内存信息、GC情况等。
- 支持在线诊断和分析生产环境中的Java应用,无需重启或修改代码。
您可以通过以下步骤开始使用Arthas:
- 在Arthas官方网站(https://arthas.aliyun.com/)下载Arthas的压缩包。
从 Maven 仓库下载
#从 Github Releases 页下载
- 解压缩下载的包,并进入解压后的目录。
- 执行
./as.sh
(对于Windows系统,执行as.bat
)命令启动Arthas。 - 在Arthas的命令行界面中,输入不同的命令以实现特定功能。您可以通过
help
命令获取帮助信息,了解可用的命令和用法。 - 退出Arthas:通过输入
quit
命令或按下Ctrl+C
组合键,可以退出Arthas。
常见操作的使用
- help指令查看arthas可以使用的指令
- 使用dashboard命令查看线程基本信息、内存中堆栈分配情况、系统环境信息,使用Ctrl+z退出
- 使用thread指令查看所有线程
- 使用jad指令查看反编译的类信息
jad BaseController
分析方法耗时,java方法耗时过长分析
- 使用trace指令分析指定方法的耗时,需要访问接口才会进入到监听
trace com.luntek.certificate.api.UserController getUserBaseInfo -n 1
格式: trace + 类所在包 + 类全称 + 空格 + 方法名
如果方法调用的次数很多,那么可以用-n
参数指定捕捉结果的次数。比如上面的例子里,捕捉到一次调用就退出命令
然后我们执行上面的命令
- 热更新功能(sc与redefine指令)
在代码中增加相应的日志代码,并且将相应的Java代码文件编译成class字节码文件***.class,可以使用mvn指令打包整个项目或者使用javac指令获取class文件,将字节码文件上传到生产服务器
并且使用sc命令查找对应的字节码文件(因为我们要替换它),并且要找到它的类加载哈希码,因为是类加载器加载类,所以我们需要使用同一个类加载器才行。
# 获取要修改的类信息
sc -d *UserController*
# 获取类加载器的哈希值,多个是因为有接口与实现类,我这里找到的是 5197848c
sc -d *UserController* | grep classLoaderHash
替换字节码文件,将刚上传到服务器的字节码文件加载到JVM中,使用redefine命令进行替换
redefine -c 5197848c /usr/local/arthas/UserController.class
查看日志与修改的代码,代码生效
注意: Arthas热更新目前不支持在类增加/删除属性field或方法method操作。
分类:
JAVAEE
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧