`
flyfoxs
  • 浏览: 296829 次
  • 性别: 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  
 

相关推荐

    JAVA类加载器分析--热部署的缺陷(有代码示例,及分析)

    总之,“JAVA类加载器分析--热部署的缺陷”这篇博文深入探讨了Java中的类加载机制,特别是热部署过程中可能出现的问题,以及如何通过理解这些机制来优化和解决问题。了解这些知识对于开发和维护大型Java应用至关重要...

    java类加载器-tomcat中的类加载器

    Java 类加载器是Java虚拟机(JVM)的核心组成部分,它负责将编译后的字节码文件(.class文件)加载到JVM中并转换为运行时的数据结构。Tomcat,作为广泛使用的Java Servlet容器,它自定义了一套类加载机制,以满足Web...

    Java之——类热加载

    Java的类加载器分为Bootstrap ClassLoader(引导类加载器)、Extension ClassLoader(扩展类加载器)和App ClassLoader(应用程序类加载器)。自定义类加载器可以继承`java.lang.ClassLoader`,并覆盖`loadClass()`...

    Java类加载器(ClassLoader)1

    Java类加载器分为三种主要类型:引导类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader,也称为系统类加载器)。它们共同工作,确保了Java...

    java类加载器

    类加载器对于理解和优化应用程序的行为至关重要,尤其是涉及到类的动态加载、热部署或者隔离不同环境的类加载需求时。本文将深入探讨类加载器的工作原理,主要类加载器类型,并通过示例展示如何自定义类加载器。 ...

    Java的类加载器

    Java的类加载器是Java虚拟机(JVM)的核心组件之一,它负责将类的字节码从磁盘、网络或其他数据源加载到内存中,并转换为可执行的Java对象。类加载器不仅关乎程序的运行,还在实现动态加载、插件系统等方面发挥着...

    Java基于自定义类加载器实现热部署过程解析

    "Java基于自定义类加载器实现热部署过程解析" Java中基于自定义类加载器实现热部署是指在不重启应用的情况下,当类的定义即字节码文件修改后,能够替换该Class创建的对象。热部署是Java中的一个重要概念,它可以...

    支持Java热部署的插件

    Java热部署主要涉及到JVM(Java虚拟机)和类加载器(ClassLoader)的工作机制。JVM在运行时会加载类文件到内存中,当类被修改后,热部署插件能够检测到这种变化,并替换内存中的旧版本类,而不需要停止服务。这个...

    深入研究Java类加载机制 深入研究Java类加载机制

    虽然Java提供了默认的类加载器,但在某些情况下可能需要自定义类加载器来满足特定的需求,如实现热部署、动态代理等功能。自定义类加载器需要继承`java.lang.ClassLoader`类,并重写`findClass`方法来实现自定义加载...

    myeclipse 插件热部署 jrebel6.5

    myeclipse 插件热部署 jrebel6.5 亲测可用,资源下载到磁盘,然后打开myeclipse 路径为:Windows ---> Perferences --> MyEclipse -->Servers -->Tomcat --> Tomcat 7.x -->JDK 配置jvm参数: -...

    java类加载器1

    Java 类加载器是Java语言的核心特性之一,它允许程序在运行时动态地加载类到Java虚拟机(JVM)中。这一特性对于实现模块化、插件化和动态部署等功能至关重要。类加载器的设计遵循“分层加载”原则,形成了一个树状的...

    java 类加载器 class loader

    自定义类加载器是Java平台灵活性的一个体现,它可以用来实现动态加载、热部署等功能。创建自定义类加载器通常需要继承`java.lang.ClassLoader`,重写`findClass()`或`loadClass()`方法,从而控制类的查找和加载过程...

    Java类加载器的详解

    - 插件系统:通过类加载器加载不同插件的类,实现插件的动态加载和卸载。 - 容器框架:如Spring框架,利用类加载器来管理不同应用的bean,防止类冲突。 了解并掌握Java类加载器的工作原理和用法,对于优化应用程序...

    Java类加载器机制与模型.pdf

    总之,Java类加载器机制是Java平台灵活性和动态性的重要体现,它使得JVM能够在运行时加载和解析类,支持代码的热部署,增强了系统的可扩展性和可维护性。通过深入学习和理解这一机制,开发者能够更好地驾驭Java应用...

    Java类加载器学习总结.pdf

    - `java.lang.Thread`类的`getContextClassLoader()`和`setContextClassLoader(ClassLoader cl)`方法:允许获取和设置线程的上下文类加载器,这在进行不同类加载器协作时非常有用,例如在使用线程池时,可以确保线程...

    深入Java虚拟机_002_深入详解JVM之类加载器深度剖析、根、扩展及系统类加载器

    例如,通过自定义类加载器可以实现动态加载类、隔离不同版本的库,或者实现热部署等高级功能。 总的来说,JVM的类加载器是Java运行机制的关键组成部分,深入理解和掌握这一部分知识,对于提高Java程序员的专业素养...

    java类加载器和核心机制.pdf

    在Java中,类加载器和类加载机制是非常重要的概念,它们使得Java具备了动态加载和热部署的能力,极大地提高了程序的灵活性。类加载器负责将.class文件加载到Java虚拟机中,并生成对应的java.lang.Class对象,以便JVM...

    自定义类加载器实现自定义加载

    - Java中的类加载器采用双亲委派模型,即一个类首先由启动类加载器Bootstrap ClassLoader尝试加载,如果找不到则交给扩展类加载器Extension ClassLoader,再找不到则交由应用程序类加载器AppClassLoader,最后如果...

    Java类重新加载101对象类和类加载器Java开发Jav

    它通过插入自己的类加载器来实现类的热部署。 2. **Java Instrumentation API**:Java提供了一个名为`java.lang.instrument`的API,允许我们在运行时修改类的字节码。开发者可以使用这个API实现类的动态替换。 3. **...

    tomcat类加载器

    总结来说,Tomcat类加载器对于理解和调试多应用环境下的Java应用程序至关重要,而"DevLoader"可能是一种专为开发环境优化的类加载器,提供热部署等功能。对这个主题的深入理解有助于优化开发流程,提高生产力。

Global site tag (gtag.js) - Google Analytics