`
flyfoxs
  • 浏览: 294517 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JAVA类加载器分析-比较热部署和"Hot Code Replace"

阅读更多

最近复习JAVA类加载的相关知识,看到了热部署的实现原理,突然感觉这个好像不是以前Eclipse调试Tomcat的时候,修改代码不需要重启就可以调试的功能.查阅资料比较之后,发现不需要重启就可以继续调试的功能是"Hot Code Replace",我个人比较这两者之间的区别如下:

 

 

1)如果源文件有修改

热部署会会导致JVM里面有2个不同的Class存在,他们的类加载器不一样.他不会修改JVM已有对象

"Hot Code Replace"会用新的Class替代原有的Class,并且已有的instance都会被替换.也就是现有系统相关对象会被替换

 

2)应用场景

热部署更正规,产品环境不推荐,因为会出现内存泄露的问题. 但是测试环境之类的很方便,不需要重启.

"Hot Code Replace",只能应用于开发环境,比如Eclipse或者一些IDE开发环境.Hot Code Replace本身就是Java Platform Debugger Architecture的一部分.

 

3)对Class修改的限制

热部署对Class的修改没有什么限制,

"Hot Code Replace",不能修改Class的signature ,比如不能修改方法,不能添加新的属性,如果修改Signature,在Eclipse上就会有下面的对话框弹出.这个修改限制,也是为什么新的Class可以替换现有的Class及Instance.



 

 

 

 

参考地址:

What is hot code replace?  

http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F 

 

 

How to Set Up Hot Code Replacement with Tomcat and Eclipse: 

http://blog.redfin.com/devblog/2009/09/how_to_set_up_hot_code_replacement_with_tomcat_and_eclipse.html#.U5k47fm1bac

  • 大小: 55.7 KB
分享到:
评论
1 楼 honey_fansy 2017-08-05  
 

相关推荐

Global site tag (gtag.js) - Google Analytics