介绍
这篇文章主要为大家展示了如何使用阿尔萨斯命令定义实现Java热更新,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。
阿尔萨斯是一个Java开源诊断神器。
今天分享一个非常重要的命令<代码>定义> 代码,主要作用是加载外部的. class文件,用来替换JVM已经加载的类,总结起来就是实现了Java的热更新。
<代码>定义> 代码在一下几种情况中会失败:1,增加了<代码>字段> 代码;2,增加了<代码> 代码>方法;3,替换正在运行的方法。
前两个比较好理解,第三个意思就是这个方法必须结束之后才会被替换,如果有个方法开始运行之后就不会跳出,那么这个方法所在的类是无法被替换的,类似无限循环的方法。
中间提到了将本地的. class文件上传到服务器的技巧,个人没有采用,如果是要热更新,完全可以利用mc这个命令在服务端编译更新后的代码,然后进行本地替换。
代码
包com.fun; 进口com.fun.frame.SourceCode; 进口org.slf4j.Logger; 进口java.util.ArrayList; 进口并不知道; 公开课有趣的源代码里{延伸 int[]党卫军=new int [1024]; 公共静态日志记录器=getlog (Fun.class); 公共静态void main (String [] args) { List,乐趣=new ArrayList<的在(); 而(真){ 有趣好玩有趣=new (); funs.add(有趣的); 睡眠(3000); 测试(); 输出(funs.size ()); } } 公共静态空白测试(){ logger.info(“成功! ! !“); } }
调用测试()方法会打印日志的,如果是该方法被其他地方调用,修改之后也会生效。
以上就是关于如何使用阿尔萨斯命令定义实现Java热更新的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看的到。