Arthas不停机替换线上代码

当生产环境中出现bug而无法立即发布新版本时,可以通过Arthas工具进行应急处理。首先下载并启动Arthas,然后选择目标Java进程。利用jad命令反编译需要修改的类,保存并进行编辑。接着,使用sc命令找到类的加载器,MC命令结合指定的classLoader重新编译修改后的类。最后,运用redefine命令将新编译的类加载到JVM中,实现线上代码的热修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决问题:

生产环境出现bug,但是又不方便重新发版启动,可以使用Arthas将线上的代码反编译出来,然后进行修改,修改之后再通过类加载器将类重新进行编译,最后加载到JVM中。

  1. 安装Arthas

    curl -O https://alibaba.github.io/arthas/arthas-boot.jar
    
  2. 启动Arthas

    java -jar arthas-boot.jar
    
  3. 选择要操作的Java进程


  4. jad命令 将需要更改的文件先进行反编译,保存下来 ,编译器修改

    jad  --source com.runlion.middleground.user.api.dto.CementRatioInfoDTO > /data/CementRatioInfoDTO.java
    
  5. SC命令 查找当前类是哪个classLoader加载的

    sc -d com.runlion.middleground.user.api.dto.CementRatioInfoDTO | grep classLoader
    


  6. MC命令 用指定的classloader重新将类在内存中编译

    mc -c 45a37759 /data/CementRatioInfoDTO.java -d /data
    


  7. redefine命令 将编译后的类加载到JVM

    redefine /data/com/runlion/middleground/user/api/dto/CementRatioInfoDTO.class
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值