热部署与热加载

1.联系和区别

联系:

  1. 不重启服务器建议/部署项目
  2. 基于Java的类加载器实现

实现原理:

  1. 热部署直接重新加载整个应用
  2. 热加载在运行时重新加载class

使用场景:

  1. 热部署更多的是在生产环境使用
  2. 热加载则更多的是在开发环境使用

2. 原理解析

Java类加载的五个阶段:加载-->验证-->准备-->解析-->初始化

类加载的五个阶段

5种初始化:

  1. 遇到new,get, static这几条字节码指令,如果类没有初始化,则需要触发初始化。final修饰的类会在编译时把结果放到常量池中,即使调用也不会触发初始化。final关键字它修饰的是常量。
  2. 使用反射对类进行反射调用,如果类没有进行初始化,就需要先初始化
  3. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,需要先触发父类的初始化。先初始化父类,在初始化子类。
  4. 虚拟机启动的时候用户需要制定一个要执行的主类,虚拟机会先初始化这个主类。
  5. 使用jdk1.7动态机制相关的句柄会进行初始化。

Java类加载器特点:

  1. 有AppClass Loader(系统类加载器)开始加载指定的类
  2. 类加载器将加载任务交给其父, 如果其父找不到, 再由自己去加载
  3. Bootstrap Loader(启动类加载器)是最顶级的类加载器

results matching ""

    No results matching ""