Arthas不停机热修改代码

Arthas不停机热修改代码

1、Arthas介绍

Arthas是阿里巴巴开源的Java诊断工具,采用的是命令交互模式,提供Tab 自动补全,在线排查问题,无需重启,动态跟踪Java代码,实时监控JVM状态,方便定位和诊断线上程序运行问题。

开源地址:https://github.com/alibaba/arthas

官方文档:https://arthas.aliyun.com/doc/

2、Arthas通常的使用场景(解决的问题)

1、可以全局视角来查看系统的运行状况

2、排查CPU升高,是哪里占用CPU

3、排查运行的多线程出现死锁,阻塞的情况

4、程序运行耗时很长,排查是哪里出现耗时长

5、这个类是哪个jar包加载的?为什么会报各种类相关的Exception?

6、可以监控JVM的实时运行状态

3、Arthas不停机热修改代码

第一步:下载Alibaba arthas

第二步:解压并以java -jar的方式启动arthas

 arthas-packaging-3.5.5-bin是Arthas代码,arthas-packaging-3.5.5-doc是Arthas官方文档。

进入bin目录,进入cmd窗口,通过java -jar 启动arthas。

 第三步:选择要修改的项目,直接键入数字回车即可

第四步:使用jad命令反编译要修改的代码,关于jad等Arthas命令可以参考官方文档

jad --source-only com.chuangge.task.cyymsBusinessTask2 > /tmp/cyymsBusinessTask2.java

 反编译后可以在文件夹中看到.java文件,由于本人实践发现修改后编译为.class文件报错,于是直接使用idea编译后的.class文件,copy到此文件夹下。

 

 第五步:替换JVM中的代码,使用 redefine 热更新

redefine /tmp/cyymsBusinessTask2.class

 正常执行后显示如下:

[arthas@63]$ redefine /tmp/xxxxxx.class
redefine success, size: 1

运行系统进行测试,即可发现代码已被修改!

总结
正常来说只需要简单四步就能进行热更新

一、使用 jad 反编译出 .java 文件

二、编辑文件,修改逻辑

三、使用 mc 编译修改后的文件

四、使用 redefine 热更新

当然,如果像我这样遇到编译.class失败的场景,可以参考我的步骤,直接拿到修改后的 .class 文件,然后继续进行操作。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值