精华内容
下载资源
问答
  • 2019-09-18 19:06:12

    2018-8-22
    今天入职第二天,看到老大在群里发了一个go热加载实现的链接,之前没有听说过热加载,所以搜索了一下,下面是关于热部署和热加载的相关整理。

    引言

    在项目线上更新时,可能会遇到需要热部署的情况,虽然现在大多数公司由于业务量大采用了分布式集群,可以分批次的重启更新。但是还是有需要热部署

    热部署和热加载的区别

    比较热部署热加载
    部署方式热部署在服务器运行时重新部署项目热加载在运行时重新加载class
    实现原理热部署直接重新加载整个应用热加载在运行时重新加载class
    使用场景热部署更多的是在生产环境使用热加载则更多的实在开发环境使用(节省开发的时间和调试的时间)
    安全性热加载几乎没有
    操作前后变化会清空session ,释放内存不清空session ,不释放内存。要考虑内存溢出的情况

    热加载:依赖类的加载机制,在容器启动的时候后台会启动一个线程,定时间的检测类时间戳的变化,如果累的时间戳发生了变化,就将类重新带入,侧重的是运行时通过重新加载改变类的信息,直接改变程序的行为。

    热部署

    就是已经运行了项目,更改之后,不需要重新tomcat,但是会清空内存,重新打包,重新解压war包运行

    可能好处是一个tomcat多个项目,不必因为tomcat停止而停止其他的项目

    热加载

    是基于字节码进行更改的,不释放内存,开发可用,上线不可用,比如修改类了,原先的类内存不会释放,新的类还会增加内存。

    更改字节码的意思是应该更改exploded war包中的.class文件.

    热加载不重启tomcat,不重新打包

    更新静态资源

    更新静态资源是更改exploded war的静态资源,和热加载归到一起。

    参考

    1. 热部署和热加载
    2. 热部署和热加载的区别
    3. 热部署与热加载的配置
    更多相关内容
  • 详解tomcat热部署和热加载的方法 我在项目开发过程中,经常要改动Java/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载:  1.热加载:在server.xml...
  • tomcat热部署和热加载

    千次阅读 2022-01-25 16:29:53
    tomcat热部署和热加载

    旧项目开发过程中,经常要改动Java/JSP 文件,但又不想频繁重新启动服务器。这时候有两种方式 :热部署 和 热加载

     1.热加载

    server.xml -> context 属性中 设置 reloadable="true"

    <Context docBase="xxx" path="/xxx" reloadable="true"/>

    2. 热部署

    server.xml -> context 属性中 设置  autoDeploy="true"

    <Context docBase="xxx" path="/xxx" autoDeploy="true"/>

     或者设置:

    <Host name="localhost" appBase="webapps"
          unpackWARs="true" autoDeploy="true"
          xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="xxx" path="/xxx"/> 
    </Host>

    3.区别:

          热加载:服务器会监听 class 文件改变,包括web-inf/class,wen-inf/lib,web-inf/web.xml等文件,若发生更改,则局部进行加载,不清空session ,不释放内存。开发中用的多,但是要考虑内存溢出的情况。

          热部署: 整个项目从新部署,包括你从新打上.war 文件。 会清空session ,释放内存。项目打包的时候用的多。

     开发过程中,不想频繁重启,也可以通过开发工具进行设置(对springboot之外的项目) :

    1)Eclipse

    2)idea

    展开全文
  • 热部署和热加载的区别 Java热部署热加载的联系: 1.不重启服务器编译/部署项目 2.基于Java的类加载器实现 Java热部署热加载的区别: 部署方式: 1、热部署在服务器运行时重新部署项目 2、热加载在运行时重新...

    热部署和热加载的区别

    Java热部署与热加载的联系:
    1.不重启服务器编译/部署项目
    2.基于Java的类加载器实现
    
    Java热部署与热加载的区别:
    部署方式:
    1、热部署在服务器运行时重新部署项目
    2、热加载在运行时重新加载class
    
    实现原理:
    1、热部署直接重新加载整个应用
    2、热加载在运行时重新加载class
    
    使用场景:
    1、热部署更多的是在生产环境使用
    2、热加载则更多的实在开发环境使用
    
    热加载几乎没有安全性,直接修改Java虚拟机中的字节码文件,难以监控和控制。
    热加载有个通俗的名字就是开发者模式。
    
    1、说一下自己的理解
    运行tomcat项目需要3步:
    1.打包并指定给tomcat
    2.启动tomcat
    3.解压war包并运行(第三步和第二步一起的)
    
    2、热部署
    1.就是已经运行了项目,更改之后,不需要重新tomcat,但是会清空内存,重新打包,重新解压war包运行
    2.可能好处是一个tomcat多个项目,不必因为tomcat停止而停止其他的项目
    
    3、热加载
    1.是基于字节码进行更改的,不释放内存,开发可用,上线不可用,比如修改类了,原先的类内存不会释放,新的类还会增加内存.
    2.更改字节码的意思是应该更改exploded war包中的.class文件.
    3、热加载不重启tomcat,不重新打包
    
    4、更新静态资源
    1.更新静态资源是更改exploded war的静态资源,和热加载归到一起.
    
    展开全文
  • 热加载和热部署

    2021-04-19 00:37:03
    一 什么是热加载和热部署 1.1 热部署(Hot Deploy) 1.2 热加载(Hot Swap) 二 热加载的原理是什么 2.1 检测哪些文件需要重新被加载 2.2 怎么加载 三 热部署的原理是什么 四 区别 一 什么是热加载和热部署 1.1...

    目录

     

    一 什么是热加载和热部署

    1.1 热部署(Hot Deploy)

    1.2 热加载(Hot Swap)

    二 热加载的原理是什么

    2.1 检测哪些文件需要重新被加载

    2.2 怎么加载

    三 热部署的原理是什么

    四 区别


    一 什么是热加载和热部署

    1.1 热部署(Hot Deploy)

    热部署针对的是容器或者是整个应用,部署了新的资源或者修改了一些代码,需要在不停机的情况下的重新加载整个应用。

     

    1.2 热加载(Hot Swap)

    热加载针对的是单个字节码文件,指的是重新编译后,不需要停机,应用程序就可以加载使用新的class文件

     

    二 热加载的原理是什么

    2.1 检测哪些文件需要重新被加载

    如果应用系统简单的话,可以开启一个单独的线程,间隔时间内重新加载所有的class文件。

    如果稍微大一点的话,需要考虑性能,尽量识别出哪些需要被热加载,比如根据class文件最新更新时间判断等等

    因为他不会清理内存吗,所以有内存溢出的风险,所以成熟的热加载软件或者系统都会有对应的方案来处理。

     

    2.2 怎么加载

    自定义一个类加载器,注意URLClassLoader不能用,因为URLConnection里面设置了缓存,无法有效加载新的class文件。可以继承ClassLoader,然后重写findClass方法。

    public class MyClassLoader extends ClassLoader {
        //要加载的java类的classpath路径
        private String classPath;
    
        public MyClassLoader( String classPath) {
            super(ClassLoader.getSystemClassLoader());
            this.classPath = classPath;
        }
    
        @Override
        protected Class<?> findClass(String name) throws ClassNotFoundException {
            byte[] data = this.loadData(name);
            //返回加载后的Class对象
            return this.defineClass(name, data, 0, data.length);
        }
       
        private byte[] loadData(String name) {
            try {
                name = name.replace(".", "/");
                FileInputStream is = new FileInputStream(new File(classPath + "/" +name + ".class"));
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                int b = 0;
                while ((b = is.read()) != -1) {
                    bos.write(b);
                }
                is.close();
                return bos.toByteArray();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public String getClassPath() {
            return classPath;
        }
    
        public void setClassPath(String classPath) {
            this.classPath = classPath;
        }
    }
    
    
    
    public class HotSwapMain {
    
        public static void main(String[] args) throws Exception{
    
            while (true) {
    
                MyClassLoader classLoader = new MyClassLoader("E:/code/ecom-review-core/target/classes");
    
                Class<?> clazz = classLoader.loadClass("com.core.jvm.hotload.HotSwap");
    
                Object newInstance = clazz.newInstance();
    
                clazz.getMethod("output").invoke(newInstance);
    
                Thread.sleep(2000);
    
            }
    
        }
    
    }

     

    三 热部署的原理是什么

    热部署是加载整个应用程序,包括运行需要使用到的各种文件,比如Jar包,JS或者CSS或者html等静态文件或者一些配置文件等。我们以tomcat为例,它首先校验是否开启了热部署,并且发生了修改,它有一个后台线程,定期进行reload检测,如果检测需要重新部署,即热部署,则先停止,然后启动,这期间会清理session,清空内存。

     

    四 区别

    #1 热部署是针对整个应用,包括Jar包,class文件,配置文件等;热加载只针对class文件

    #2 热部署会清空内存;热加载不会清空内存,有内存溢出风险

     

    展开全文
  • Tomcat热部署和热加载的方法

    千次阅读 2018-10-18 15:00:35
    有两种方式热部署 和热加载热加载 在server.xml -&gt; context 属性中 设置 reloadable=“true” 热部署 在server.xml -&gt; context 属性中 设置 autoDeploy=“true” 同样可以: &lt;Host name...
  • eclipse实现热部署和热加载

    千次阅读 2018-07-05 09:31:00
     我们知道,当我们每次修改后台java代码的时候,一保存Tomcat就会自动去重新启动,这个叫热部署。非常麻烦,浪费时间,下面就是修改配置。将热部署 改为热启动的方法 在你的eclipse中 找到Server这个文件夹 ,...
  • Tomcat的热部署和热加载机制 说到tomcat的热部署和热加载,首先要明确什么是热部署?什么是热加载热加载:实现方式是 Web 容器(Context组件)启动一个后台线程,定期检测类文件的变化,如果有变化,就重新加载类...
  • 主要介绍了Java基于自定义类加载器实现热部署过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 热部署热部署的使用场景1 . 本地调试时,加了几行...Java 热部署热加载的联系与区别:Java热部署热加载的联系:1.不重启服务器 编译/加载 项目2. 基于Java的类加载器实现Java热部署热加载器的区别:部署方式...
  • 热加载和热部署的区别

    千次阅读 2020-09-04 08:32:20
    1.热部署 1)就是已经运行了项目,更改之后,不需要重新tomcat,但是会清空内存,重新打包,重新解压war包运行可能好处是一个tomcat多个项目,不必因为tomcat停止而停止其他的项目,运用于已经启动的服务器,在修改项目后...
  • 主要介绍了Eclipse/ tomcat 如何实现热部署和热启动,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 1.IDEA自带热加载,Debug模式打开是自动带有...2.spring-boot-devtools 实现热部署 使用这种方法解决了Debug模式下新增方法、变量,修改配置文件,还有缓存的问题,这种方法是需要重启Tomcat的。 点击这里配置. ...
  • 热部署: 整个项目从新部署,包括你从新打上.war 文件。 会清空session ,释放内存。项目打包的时候用的多。 热加载: 服务器会监听 class 文件改变,包括web-inf/class,wen-inf/lib,web-inf/web.xml等文件,若...
  • 热部署和热加载的配置

    千次阅读 2018-07-18 16:48:40
    有两种方式热部署 和热加载:  1.热加载:在server.xml -&gt; context 属性中 设置 reloadable="true" ? 1 &lt;Context docBase="xxx" path="/xxx" r.....
  • Java热部署热加载

    千次阅读 2018-02-28 19:16:41
    Markdown扩展Markdown简洁的语法 代码块高亮 图片链接图片上传 LaTex数学公式 UML序列图流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
  • 想要知道热部署的原理,必须要了解java类的加载过程。一个java类文件到虚拟机里的对象,要经过如下过程。 首先通过java编译器,将java文件编译成class字节码,类加载器读取class字节码,再将类转化为实例,对实例...
  • 主要介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded使用spring-boot-devtools进行热部署,文中给出了详细示例代码介绍,需要的朋友可以参考学习,下面来一起看看吧。
  • 在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载。 它们之间的区别是: 部署方式: 热部署在服务器运行时重新部署项目。 热加载在运行时重新加载class。 实现原理: 热部署直接重新加载...
  • Java笔记:SpringBoot热部署热加载

    千次阅读 2020-11-12 09:55:37
    1、Java热部署热加载联系 不重启服务器编译/部署项目 基于Java的类加载器实现 2、Java热部署热加载区别 2.1、部署方式 热部署在服务器运行时重新部署项目 热加载在运行时重新加载class 2.2、实现原理
  • java的热部署和热加载

    千次阅读 2016-08-23 11:28:54
    热部署和热加载其实是两个类似但不同的概念 一、热部署热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载。 对于Java应用程序来说,热部署就是在服务器运行时重新部署项目,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,072
精华内容 19,228
关键字:

热部署和热加载