美文网首页我爱编程
JVM类加载过程 & 双亲委派模型

JVM类加载过程 & 双亲委派模型

作者: CHSmile | 来源:发表于2018-03-02 15:56 被阅读36次
类加载过程

类加载机制:JVM将类描述数据从.class文件中加载到内存,并对数据进行,解析和初始化,最终形成被JVM直接使用的Java类型。

image.png
  • 加载:加载阶段由类加载器负责,过程见类加载器;
  • 验证:验证阶段负责验证类数据信息是否符合JVM规范,是否是一个有效的字节码文件;
  • 准备:准备阶段负责为类中static变量分配空间,并初始化(与程序无关,系统初始化);
  • 解析:解析阶段负责将常亮池中所有符号引用转换为直接引用;
  • 初始化:初始化阶段负责将所有static域按照程序指定操作对应执行(赋值static变量,执行static块)

上述阶段通常都是交叉混合允许,没有严格的先后执行顺序;

类加载器

类加载器的主要任务:是类加载过程中的加载操作:根据一个类的全限定名读取该类的二进制字节流到JVM内部,然后转换为一个对应的java.lang.Class对象实例;

开发者可以通过编写自定义类加载器来自定义类的加载规则

类加载器分类
  • 启动类加载器/Bootstrap ClassLoader
    在HotSpot虚拟机中,Bootstrap ClassLoader用C++语言编写并嵌入JVM内部,主要负载加载JAVA_HOME/lib目录中的所有类,或者加载由选项-Xbootcalsspath指定的路径下的类;
  • 拓展类加载器/ExtClasLoader
    ExtClassLoader继承ClassLoader类,负载加载JAVA_HOME/lib/ext目录中的所有类型,或者由参数-Xbootclasspath指定路径中的所有类型;
  • 应用程序类加载器/AppClassLoader
    ExtClassLoader继承ClassLoader类,负责加载用户类路径ClassPath下的所有类型,一般情况下为程序的默认类加载器;
  • 自定义加载器
    Java虚拟机规范将所有继承抽象类java.lang.ClassLoader的类加载器,定义为自定义类加载器;
双亲委派模型
双亲委派模型
加载器

双亲委派过程:当一个类加载器收到类加载任务时,立即将任务委派给它的父类加载器去执行,直至委派给最顶层的启动类加载器为止。如果父类加载器无法加载委派给它的类时,将类加载任务退回给它的下一级加载器去执行;
除了启动类加载器以外,每个类加载器拥有一个父类加载器,用户的自定义类加载器的父类加载器是AppClassLoader;
双亲委派模型可以保证全限名指定的类,只被加载一次;
双亲委派模型不具有强制性约束,是Java设计者推荐的类加载器实现方式;

相关文章

  • JVM总括四-类加载过程、双亲委派模型、对象实例化过程

    JVM总括四-类加载过程、双亲委派模型、对象实例化过程 目录:JVM总括:目录 一、 类加载过程 类加载过程就是将...

  • Java虚拟机

    JVM 组成部分 类加载器 执行引擎 内存区 本地方法调用 类加载器 双亲委派模型 类的加载过程采用双亲委派机制,...

  • JVM类加载过程 & 双亲委派模型

    类加载过程 类加载机制:JVM将类描述数据从.class文件中加载到内存,并对数据进行,解析和初始化,最终形成被J...

  • 要点提炼| 理解JVM之类加载机制

    本篇将了解类加载机制和双亲委派模型这两大知识考点: 概述 类加载全过程 类加载器&双亲委派模型 1.概述 a.JV...

  • 图解JVM内存区域划分

    图解JVM类加载机制和双亲委派模型一文中讲述了 Java 类加载的过程,它包含加载、验证、准备、解析、初始化、使用...

  • 2018-07面试题目

    1. JVM的类加载机制 主要是双亲委派模型的东西。它是什么、怎么工作的、为什么要有它,以及打破双亲委派模型的...

  • Java 类加载

    双亲委派模型 并非强制 而是推荐 SPI 父类加载器需要子类加载器加载类 打破双亲委派模型 https://www...

  • JVM类加载过程详细分析

    双亲委派加载模型 为什么需要双亲委派加载模型 主要是为了安全,避免用户恶意加载破坏JVM正常运行的字节码文件,比如...

  • java类加载破坏双亲委派模型

    前面java类加载器与双亲委派模型中提到Java采用个双亲委派的方式来完成类加载,但是双亲委派模型并不是一个强制的...

  • Java面试 常见jvm相关问题的解答

    1.什么是类加载器?类加载器有哪些?描述一下 JVM 加载 Class 文件的原理机制?类加载器双亲委派模型机制?...

网友评论

    本文标题:JVM类加载过程 & 双亲委派模型

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