最近复习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
相关推荐
Eclipse 工程代码 博文链接:https://flyfoxs.iteye.com/blog/2080502
myeclipse 插件热部署 jrebel6.5 亲测可用,资源下载到磁盘,然后打开myeclipse 路径为:Windows ---> Perferences --> MyEclipse -->Servers -->Tomcat --> Tomcat 7.x -->JDK 配置jvm参数: -...
主要介绍了Java基于自定义类加载器实现热部署过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
亲测可用,资源下载到磁盘,然后打开myeclipse 路径为:Windows ---> Perferences --> MyEclipse -->Servers -->Tomcat -->...-Drebel.ibatis-plugin--------热部署ibatis相关的jar
这是一个支持热部署的软件,在Java项目中修改Java代码不需在重启服务器。一个很实用的Java编程软件
java类加载修改源码皮诺克 Pinoc 是一个新颖的库,用于对 ...为了避免Java类加载器带来的麻烦,Pinoc没有采用Java类加载器来加载和执行对原有方法的替换或修改。 因此,原始方法的替换或修改不是用
java热部署
有没有在为修改java代码 反复重启tomcat而烦恼 下载热部署一切不成问题。内容:1.热部署 2.分给myeclipse 1g内存
springboot+mybatis+thymeleaf 热部署 java 热部署页面访问
在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于某些大型的应用来说,每次的...
Java 自定义ClassLoader 实现类的热替换核心代码
code-server部署在docker上需要的配置文件,一件部署,实现在线编码
热部署工具
jrebel-idea-热部署软件.zip。 IDEA热部署插件jrebel,修改代码可不用重启项目
实现Java热部署的几种解决方案.docx
JRebel eclipse 热部署
美团IDEA插件实现Java应用的热部署实践
IntelliJ IDEA 12.0 Web开发及热部署
java的windows自动化-自动运行java程序java的windows自动化-自动运行java程序
在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入...