美文网首页
JVM类加载机制

JVM类加载机制

作者: 文景大大 | 来源:发表于2021-03-11 22:26 被阅读0次

    JVM类加载机制

    一、基础知识

    类的加载过程可以分为如下三类:

    1.1 加载

    将字节码从不同的数据源读取到JVM中,比如从class文件、jar文件甚至是网络中,将字节流加载进来形成Class类;

    1.2 链接

    简单的说,就是将上一步加载进来的类进行一些预处理,主要包含三个步骤:

    • 验证

      验证Class类中的信息是否满足JVM的规范和约束要求,防止字节码注入、非标编译等操作,从而影响JVM的运行。这个过程会触发其它Class的加载操作。

    • 准备

      开始创建Class类中的静态变量,给它们分配存储空间。

    • 解析

      将符号引用替换为实际引用。

    1.3 初始化

    为上面的静态变量赋值、执行静态代码块中的逻辑等。

    二、进阶知识

    2.1 类加载器

    • 启动类加载器Bootstrap Class-Loader,负责加载jre/lib目录下面的jar文件;
    • 扩展类加载器Extension Class-Loader,负责加载jre/lib/ext目录下面的jar文件;
    • 应用类加载器Application Class-Loader,加载classpath中的内容;
    • 自定义类加载器User Class-Loader;

    2.2 双亲委派

    即类加载器在接收到加载某个Class的请求的时候,会将该请求转发给父类加载器,只有在父类加载器在它负责区域中没有找到这个类的时候,才允许子类加载器加载该Class。

    双亲委派主要是为了解决各个类加载器重复加载同一Class的问题。

    相关文章

      网友评论

          本文标题:JVM类加载机制

          本文链接:https://www.haomeiwen.com/subject/kkvoqltx.html