美文网首页
JVM - 类加载机制

JVM - 类加载机制

作者: ouyangan | 来源:发表于2017-05-12 20:57 被阅读27次

本文内容主要来源于《分布式java应用与基础实践》

类加载机制

类加载机制是指.class文件加载到jvm生成class对象,然后在代码中可以实例化class对象并进行调用。类加载机制不仅可以加载本地的.class还可以运行时动态加载.class ,并且通过类加载机制达到类隔离的效果。比如tomcat中可以部署多个war包就是通过类隔离机制来实现的。
整个类加载过程分为三个步骤:

  • 加载
  • 链接
  • 初始化
    当加载和链接过程完成后,.class文件就从二进制文件转化为了Class对象 ,但是初始化不一定发生在类加载过程中,但是最迟发生在初次主动使用对象前。
Paste_Image.png

装载

装载过程负责将二进制字节码加载到jvm中,通过类的全限定名和类加载器完成类的加载,并且使用类的全限定名和类加载器实例id来标识被加载的类:com.test.Demo+ClassLoader实例id。类的命名规范如下:

  • 对于接口或非数组类型的类,其名称即为类名
  • 对于数组类型的类,其名称为“[+基本类型或L+引用类型类名;“,数组类型中的元素类型由所在的classLoader负责加载,但是数组类型本身则由jvm直接创建。

链接

该过程主要是对二进制字节码进行校验,初始化静态变量以及设置默认值,解析类调用的接口和类,对类中属性和方法进行验证。

初始化

初始化过程包括:执行静态代码块,构造器,静态属性的初始化。在以下四中情况下会进行初始化操作:

  • new一个对象。
  • 反射调用了类中的方法。
  • 子类初始化
  • jvm启动过程指定的初始化类。

类加载机制

从JDK1.2版本开始引入如下图所示的双亲委派模型。什么叫双亲委派模型:除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。具体工作过程:如果一个类加载器收到类加载请求,它首先会将请求动作委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传递到顶层的启动类加载器中,只有当父类加载器反馈自己无法加载请求时(在它的搜索范围内没有找到所需的类),子加载器才会尝试自己去加载。

Paste_Image.png
  • BootStrap ClassLoader
    此类是由C++实现的,属于虚拟机自身的一部分。这个类不是ClassLoader的子类,在运行时没办法拿到这个对象,jvm启动时会初始化此类,并且通过此ClassLoader完成$JAVA_HOME中的jre/lib/rt.jar里面所有的class文件。

  • Extension ClassLoader
    jvm用此ClassLoader来加载一些拓展的jar包,对应的类名为:ExtClassLoader。

  • System ClassLoader
    jvm用此ClassLoader来加载启动时指定的Classpath中的jar包,对应的类名为:AppClassLoader。

  • User-defined ClassLoader
    开发人员集成ClassLoader抽象类自行实现类加载器。可以在类加载时自定义操作,比如从网络下载jar包,解密等等。

相关文章

  • JVM——类加载机制

    前言 今天就来介绍类的加载机制以及双亲委派机制。 JVM 类加载机制 JVM 类加载的五个阶段 JVM 类加载机制...

  • JVM类加载学习二-类加载机制学习

    JVM类加载机制 @(Java)[JVM|类文件结构] [TOC] 基本介绍 JVM的类加载机制:JVM把描述类的...

  • JVM——类加载机制

    JVM类加载机制 JVM类加载机制是通过类加载器ClassLoader来将.class文件加载到内存中,以便调用....

  • 类加载机制(一)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三) 类加载机制 1.JVM把class文件加载到内存,对...

  • java类加载机制、类加载器、自定义类加载器

    java类加载机制、类加载器、自定义类加载器 类加载机制 java类从被加载到JVM到卸载出JVM,整个生命周期包...

  • Java——JVM篇——收藏系列来啦(终结篇)

    转自:Java——JVM篇——收藏系列来啦(终结篇)侵删。 2.9.JVM 类加载机制 JVM 类加载机制分为五个...

  • 类加载机制

    类加载机制 类加载机制是指 .class文件加载到JVM,并形成Class对象的机制。 类加载机制可以在运行时动态...

  • JVM类加载机制

    这节主要从覆盖JDK的类开始学习JVM的类加载机制。Java和JVM的类加载机制类似,但JVM的类加过程稍有些复杂...

  • 2020最新JAVA核心面试知识整理283页(带详解)

    部分目录预览 部分内容预览 JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下...

  • JAVA类加载机制

    jvm之java类加载机制和类加载器(ClassLoader)的详解java类加载机制:全盘负责、双亲委派、缓存机...

网友评论

      本文标题:JVM - 类加载机制

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