如何通过Arthas热更新正在运行中的java代码

发布时间:2024年01月07日

前提是已安装好Arthas,安装相当简单,执行下述语句即可:

curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

然后输入对应的pid,即可进入交互界面。

主要涉及以下三个arthas提供的指令:jad ? mc ?redefine 。具体步骤如下:

1、通过jad指令将class反编译成java文件:

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

2、修改/tmp/UserController.java中的代码

通过linux命令:vi ? vim ? sed 均可

3、通过 sc 指令找到该类的加载器

sc -d *UserController | grep classLoaderHash

4、查找所有的类加载器列表

classloader -l

5、通过 mc 指令将java文件编译成class文件

mc --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader /tmp/UserController.java -d /tmp

6、通过 redefine 指令重新加载class

redefine /tmp/com/example/demo/arthas/user/UserController.class

完成

注意:redefine重新加载class之后,如果再次使用jad指令,则会将class还原成初始状态。

文章来源:https://blog.csdn.net/zzm628/article/details/135374658
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。