最近复习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
相关推荐
总之,“JAVA类加载器分析--热部署的缺陷”这篇博文深入探讨了Java中的类加载机制,特别是热部署过程中可能出现的问题,以及如何通过理解这些机制来优化和解决问题。了解这些知识对于开发和维护大型Java应用至关重要...
Java类加载器分为三种主要类型:引导类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader,也称为系统类加载器)。它们共同工作,确保了Java...
类加载器对于理解和优化应用程序的行为至关重要,尤其是涉及到类的动态加载、热部署或者隔离不同环境的类加载需求时。本文将深入探讨类加载器的工作原理,主要类加载器类型,并通过示例展示如何自定义类加载器。 ...
Java的类加载器是Java虚拟机(JVM)的核心组件之一,它负责将类的字节码从磁盘、网络或其他数据源加载到内存中,并转换为可执行的Java对象。类加载器不仅关乎程序的运行,还在实现动态加载、插件系统等方面发挥着...
"Java基于自定义类加载器实现热部署过程解析" Java中基于自定义类加载器实现热部署是指在不重启应用的情况下,当类的定义即字节码文件修改后,能够替换该Class创建的对象。热部署是Java中的一个重要概念,它可以...
亲测可用,资源下载到磁盘,然后打开myeclipse 路径为:Windows ---> Perferences --> MyEclipse -->Servers -->Tomcat -->...-Drebel.ibatis-plugin--------热部署ibatis相关的jar
JAVA 类加载机制是Java平台核心特性之一,它关乎到程序的运行时环境和代码的动态加载。理解这一机制有助于开发者解决与对象创建、配置问题、应用程序发布等相关的问题。以下是关于JAVA 类加载机制的详细分析: 首先...
自定义类加载器是Java平台灵活性的一个体现,它可以用来实现动态加载、热部署等功能。创建自定义类加载器通常需要继承`java.lang.ClassLoader`,重写`findClass()`或`loadClass()`方法,从而控制类的查找和加载过程...
- 插件系统:通过类加载器加载不同插件的类,实现插件的动态加载和卸载。 - 容器框架:如Spring框架,利用类加载器来管理不同应用的bean,防止类冲突。 了解并掌握Java类加载器的工作原理和用法,对于优化应用程序...
总之,Java类加载器机制是Java平台灵活性和动态性的重要体现,它使得JVM能够在运行时加载和解析类,支持代码的热部署,增强了系统的可扩展性和可维护性。通过深入学习和理解这一机制,开发者能够更好地驾驭Java应用...
- `java.lang.Thread`类的`getContextClassLoader()`和`setContextClassLoader(ClassLoader cl)`方法:允许获取和设置线程的上下文类加载器,这在进行不同类加载器协作时非常有用,例如在使用线程池时,可以确保线程...
热部署虽然带来了便利,但也需要注意一些潜在问题,比如类加载器的管理、线程安全、内存占用等。在实际应用中,开发者应根据项目的特性和需求选择合适的热部署方案,并理解其工作原理,以确保应用的稳定性和性能。 ...
例如,通过自定义类加载器可以实现动态加载类、隔离不同版本的库,或者实现热部署等高级功能。 总的来说,JVM的类加载器是Java运行机制的关键组成部分,深入理解和掌握这一部分知识,对于提高Java程序员的专业素养...
在Java中,类加载器和类加载机制是非常重要的概念,它们使得Java具备了动态加载和热部署的能力,极大地提高了程序的灵活性。类加载器负责将.class文件加载到Java虚拟机中,并生成对应的java.lang.Class对象,以便JVM...
Java开发中的类加载器是Java运行环境的核心组件之一,它负责查找、加载和初始化类文件。在传统的Java应用中,类通常是从硬盘上的类路径(ClassPath)或模块路径(ModulePath)中加载的。然而,随着开发模式的演变,...
Java的类加载器体系采用的是双亲委派模型,这意味着当一个类加载器接收到加载类的请求时,它会首先将任务委托给父类加载器,只有当父类加载器无法找到该类时,子类加载器才会尝试自己加载。 其次,自定义类加载器是...
Java 类加载器是一个层次结构,包括启动类加载器、扩展类加载器和应用程序类加载器。每个类加载器都负责加载特定的类文件。Java 动态类加载机制通过委托模型来实现,委托模型是一种设计模式,用于实现类加载器之间的...
总结,Java 类加载器是JVM中的重要组成部分,它决定了类的加载过程和加载源,双亲委派机制保证了类加载的有序性和安全性。理解类加载器的工作原理有助于我们更好地进行程序设计和优化,特别是在开发插件系统、模块化...
在实际应用中,开发者可以通过自定义类加载器来实现特定的需求,比如动态加载插件、热部署等。例如,在`classloader.part1.basics`这个部分,可能涵盖了自定义类加载器的基础知识,包括如何继承`java.lang....
自定义类加载器的典型应用场景包括模块化系统、热部署和隔离环境。 例如,如果你正在开发一个需要从远程服务器获取辅助代码的系统,你可以创建一个类加载器,它可以从指定的URL加载类字节码,然后将其转换为java....