实现热部署的基本原理介绍

我在学校的某个失眠的夜晚去看了SpringBoot,对里面的热部署有了一些兴趣和了解,后来也发现热部署也是个比较重要的知识点,于是呢在这个有太阳的下午好好写一篇文章给大家分享一波自己的对于类加载器以及热部署的认知.

类加载器


类加载器概述

Java类的加载是由虚拟机来完成的,虚拟机把描述类的Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成能被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制.JVM中用来完成上述功能的具体实现就是类加载器.类加载器读取.class字节码文件将其转换成java.lang.Class类的一个实例.每个实例用来表示一个java类.通过该实例的newInstance()方法可以创建出一个该类的对象.

链接过程

将java类的二进制代码合并到JVM的运行状态之中的过程

  • 验证:确保加载的类信息符合JVM规范,没有安全方面的问题
  • 准备:正式为类变量(static变量)分配内存并设置类变量初始值的阶段,这些内存都将在方法区中进行分配
  • 解析:虚拟机常量池的符 引用替换为字节引用过程
初始化

初始化阶段是执行类构造器()方法的过程。类构造器()方法是由编译器自动收藏类中的所有类变量的赋值动作和静态语句块(static块)中的语句合并产生代码从上往下执行。

  • 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化
  • 虚拟机会保证一个类的()方法在多线程环境中被正确加锁和同步
  • 当范围一个Java类的静态域时,只有真正声名这个域的类才会被初始化

下面写段代码简单描述一下初始化里面的一些常见的问题

?上代码:

还有一种情景:
?上代码:


总结

关于热部署的知识我暂时就了解了这么多,在牺牲了一个冬日温暖的午后,终于让我熟悉了热部署的原理以及手动实现一个基础的热部署.挺有意思的! 什么时候都不能停下学习的脚步,时间过的挺快的我下半年也要出去实习了.快过年了,提前祝大家新年快乐!!! 也祝各位和我一样的大学生coder们来年里能顺利的找到一个好工作!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月16日
下一篇 2022年5月16日

相关推荐