美文网首页Java相关
JVM - 类的加载机制

JVM - 类的加载机制

作者: 万福来 | 来源:发表于2020-04-02 16:18 被阅读0次

JVM - 类的加载机制

什么是类的加载

类的加载指将类的.class文件二进制数据读入到内存中,将其放在运行时的方法区内,然后在堆内存创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。Class对象封装了类在方法区内的数据结构,并提供了各种访问接口。

类的加载过程

加载 --> 验证 --> 准备 --> 解析 --> 初始化 --> 使用 --> 卸载

  1. 加载:通过类加载器加载class文件,并在堆内存创建Class对象;
  2. 验证:验证文件格式、元数据、字节码和符号引用等是否符合JAVA规范,否则报错;
  3. 准备:初始化类的静态变量和默认值;
  4. 解析:将常量池内的符号引用替换为直接引用;
  5. 初始化:将类中静态变量赋予初始值;
  6. 使用:new出对象并使用;
  7. 卸载:执行垃圾回收。

类加载器

  • 启动类加载器:主要负责加载jre/lib目录下的类库;
  • 扩展类加载器:主要负责加载jre/lib/ext目录或者java.ext.dirs系统变量指定的目录下的类库;
  • 应用程序类加载器:主要负责加载classpath指定的目录下类库

类加载机制

  • 双亲委派:先让父类加载尝试加载类,父类加载器无法加载时才有当前类加载器进行加载;
  • 全面负责:一个类加载器加载某个class时,该class依赖的其他类也有该类加载器负责加载;
  • 缓存机制:所有加载过的class类都会被缓存,类加载器会先从缓存区查询,查询不到时才去加载。

类加载方式

  • 命令行启动应用时候由JVM初始化加载
  • 通过Class.forName()方法动态加载
  • 通过ClassLoader.loadClass()方法动态加载

Class.forName()和ClassLoader.loadClass()区别

  • Class.forName():将类的.class文件加载到jvm中,还会对类进行解释,执行类中的static块;
  • ClassLoader.loadClass():将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。
  • Class.forName(name,initialize,loader)带参函数也可控制是否加载static块。并且只有调用了newInstance()方法采用调用构造函数,创建类的对象 。

相关文章

  • 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/luixphtx.html