如何通过Arthas的redefine命令高效实现Java代码的热更新?
- 内容介绍
- 文章标签
- 相关推荐
本文共计501个文字,预计阅读时间需要3分钟。
Arthas 是一款强大的 Java 调试神器。今天分享一个非常重要的命令 redefine,主要作用是加载外部的 .class 文件,用来替换 JVM 已加载的类。总结起来,就是实现了 Java 的热更新。redefine 命令在
arthas 是一个 Java 开源诊断神器。
今天分享一个非常重要的命令 redefine ,主要作用是加载外部的 .class 文件,用来替换 JVM 已经加载的类,总结起来就是实现了 Java 的热更新。
redefine 在一下几种情况中会失败:1、增加了 field ;2、增加了 method ;3、替换正在运行的方法。
前两个比较好理解,第三个意思就是这个方法必须结束之后才会被替换,如果有个方法开始运行之后就不会跳出,那么这个方法所在的类是无法被替换的,类似无限循环的方法。
中间提到了将本地的 .class 文件上传到服务器的技巧,个人没有采用,如果是要热更新,完全可以利用 mc 这个命令在服务端编译更新后的代码,然后进行本地替换。
本文共计501个文字,预计阅读时间需要3分钟。
Arthas 是一款强大的 Java 调试神器。今天分享一个非常重要的命令 redefine,主要作用是加载外部的 .class 文件,用来替换 JVM 已加载的类。总结起来,就是实现了 Java 的热更新。redefine 命令在
arthas 是一个 Java 开源诊断神器。
今天分享一个非常重要的命令 redefine ,主要作用是加载外部的 .class 文件,用来替换 JVM 已经加载的类,总结起来就是实现了 Java 的热更新。
redefine 在一下几种情况中会失败:1、增加了 field ;2、增加了 method ;3、替换正在运行的方法。
前两个比较好理解,第三个意思就是这个方法必须结束之后才会被替换,如果有个方法开始运行之后就不会跳出,那么这个方法所在的类是无法被替换的,类似无限循环的方法。
中间提到了将本地的 .class 文件上传到服务器的技巧,个人没有采用,如果是要热更新,完全可以利用 mc 这个命令在服务端编译更新后的代码,然后进行本地替换。

