最近复习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 类加载器是Java虚拟机(JVM)的核心组成部分,它负责将编译后的字节码文件(.class文件)加载到JVM中并转换为运行时的数据结构。Tomcat,作为广泛使用的Java Servlet容器,它自定义了一套类加载机制,以满足Web...
Java的类加载器是Java虚拟机(JVM)的核心组件之一,它负责将类的字节码从磁盘、网络或其他数据源加载到内存中,并转换为可执行的Java对象。类加载器不仅关乎程序的运行,还在实现动态加载、插件系统等方面发挥着...
"Java基于自定义类加载器实现热部署过程解析" Java中基于自定义类加载器实现热部署是指在不重启应用的情况下,当类的定义即字节码文件修改后,能够替换该Class创建的对象。热部署是Java中的一个重要概念,它可以...
JAVA 类加载机制是Java平台核心特性之一,它关乎到程序的运行时环境和代码的动态加载。理解这一机制有助于开发者解决与对象创建、配置问题、应用程序发布等相关的问题。以下是关于JAVA 类加载机制的详细分析: 首先...
虽然Java提供了默认的类加载器,但在某些情况下可能需要自定义类加载器来满足特定的需求,如实现热部署、动态代理等功能。自定义类加载器需要继承`java.lang.ClassLoader`类,并重写`findClass`方法来实现自定义加载...
自定义类加载器是Java平台灵活性的一个体现,它可以用来实现动态加载、热部署等功能。创建自定义类加载器通常需要继承`java.lang.ClassLoader`,重写`findClass()`或`loadClass()`方法,从而控制类的查找和加载过程...
- 插件系统:通过类加载器加载不同插件的类,实现插件的动态加载和卸载。 - 容器框架:如Spring框架,利用类加载器来管理不同应用的bean,防止类冲突。 了解并掌握Java类加载器的工作原理和用法,对于优化应用程序...
- `java.lang.Thread`类的`getContextClassLoader()`和`setContextClassLoader(ClassLoader cl)`方法:允许获取和设置线程的上下文类加载器,这在进行不同类加载器协作时非常有用,例如在使用线程池时,可以确保线程...
热部署虽然带来了便利,但也需要注意一些潜在问题,比如类加载器的管理、线程安全、内存占用等。在实际应用中,开发者应根据项目的特性和需求选择合适的热部署方案,并理解其工作原理,以确保应用的稳定性和性能。 ...
例如,通过自定义类加载器可以实现动态加载类、隔离不同版本的库,或者实现热部署等高级功能。 总的来说,JVM的类加载器是Java运行机制的关键组成部分,深入理解和掌握这一部分知识,对于提高Java程序员的专业素养...
Java开发中的类加载器是Java运行环境的核心组件之一,它负责查找、加载和初始化类文件。在传统的Java应用中,类通常是从硬盘上的类路径(ClassPath)或模块路径(ModulePath)中加载的。然而,随着开发模式的演变,...
Java的类加载器体系采用的是双亲委派模型,这意味着当一个类加载器接收到加载类的请求时,它会首先将任务委托给父类加载器,只有当父类加载器无法找到该类时,子类加载器才会尝试自己加载。 其次,自定义类加载器是...
总的来说,Apache Tomcat 8.5.12 是一个强大且灵活的Java Web应用服务器,其热部署功能和内置的管理界面使其成为开发和生产环境的理想选择。开发者可以通过深入理解它的配置和工作原理,更好地管理和优化自己的Web...
总结,Java 类加载器是JVM中的重要组成部分,它决定了类的加载过程和加载源,双亲委派机制保证了类加载的有序性和安全性。理解类加载器的工作原理有助于我们更好地进行程序设计和优化,特别是在开发插件系统、模块化...
对于Java应用程序来说,热部署就是在运行时更新Java类文件,同时触发Spring以及其他常用第三方框架的一系列重新加载的过程。在这个过程中不需要重新启动,并且修改的代码实时生效。 在美团内部,很多工程师每天本地...
例如,自定义类加载器可以用于实现热部署、类隔离、加密加载等高级功能。 总的来说,ClassLoader是Java平台的核心组件之一,它的设计和实现对于理解JVM的工作原理至关重要。深入学习ClassLoader不仅可以提高编程...
自定义类加载器的典型应用场景包括模块化系统、热部署和隔离环境。 例如,如果你正在开发一个需要从远程服务器获取辅助代码的系统,你可以创建一个类加载器,它可以从指定的URL加载类字节码,然后将其转换为java....
* 实现热部署:Java类加载机制可以实现热部署,允许用户在不停止服务的情况下更新类文件。 * 加密类文件:Java类加载机制可以用来加载加密后的类文件,以保护类文件的安全。 Java类加载机制是Java虚拟机中的一个...
类加载器有多种类型,包括Bootstrap ClassLoader(启动类加载器)、Extension ClassLoader(扩展类加载器)和AppClass ClassLoader(应用程序类加载器)。Bootstrap ClassLoader负责加载JRE的核心库,Extension ...