Arthas不停机替换线上代码

  1. 安装Arthas

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

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

    image-20210529112523470

  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
    复制代码

    image-20210529112720151

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

     mc -c 45a37759 /data/CementRatioInfoDTO.java -d /data
    复制代码

    image-20210529112848413

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

    redefine /data/com/runlion/middleground/user/api/dto/CementRatioInfoDTO.class
    复制代码

    image-20210529112947389

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享