美文网首页
Java HotSwap 技术概览

Java HotSwap 技术概览

作者: lessIsMore_技术笔记 | 来源:发表于2018-08-01 15:53 被阅读0次

1.JPDA

Java Platform Debugger Architecture是java IDE 调试的基础

修改jvm启动参数即可打开

    -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n

技术原理也是java instrument api

确定:仅能修改方法体,不能增加修改方法、field

2.JRebel

商用产品,收费

主要用于开发期间hot 部署修改代码,这种方式叫做zero turnaround,可无限次修改,实时生效

技术原理不详,据说是将所有类均改为匿名类。可参见文档

尽管JRuby以“类(class)”作为其功能特性,但在运行时,其每个对象都是动态的,任何时候都可以加入新的域和方法。这意味着JRuby对象与Map没有什么两样,有着从方法名字到方法实现的映射,以及域名到其值的映射。这些方法的实现被包含在匿名的类中,在遇到方法时这些类就会被生成。如果你添加了一个方法,则所有JRuby要做的事情就是生成一个新的匿名类,该类包含了这一方法的方法体。因为每个匿名类都有一个唯一的名称,因此在加载该类是不会有问题的,而这样做的结果是,应用被实时动态地更新了。

缺点:不开源,性能可能影响比较大

3.DCEVM + Hotswap Agent

    通过给jvm加patch的方式,扩展了java instrument机制,使得可以修改类字节码的所有部分,包括方法名和field

缺点:需要给jvm加patch,风险比较大,实施部署也比较麻烦,如果只是开发期使用还比较好

4.类Tomcat HotDeploy

采用new WebAppClassLoader的方式,然后加载新的类的方式来实现代码的hot deploy,更新代码没有限制。

缺点:会占用permgen空间,频繁更新会造成outofmemory exception

5.redefineClasses

采用基本的java instrument api来更新方法体,无兼容性、性能和内存的风险

缺点:只能更新方法体

相关文章

网友评论

      本文标题:Java HotSwap 技术概览

      本文链接:https://www.haomeiwen.com/subject/vcilvftx.html