JAVA-大白话探索JVM-类加载过程(二)

作者: b6cd76971b2d | 来源:发表于2019-03-08 09:27 被阅读1次

首先我们知道JVM是什么以及类加载器的作用

不清楚的可以看看
JAVA-大白话探索JVM-类加载器(一)

现在我们来摸索下类的加载过程

image

首先,我们将类加载过程分为三步走

  1. 装载
  2. 链接
  3. 初始化

其中 链接 分为三步骤

图1

1.装载

  • 通过一个类的全限定名获取其定义的二进制字节流
  • 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
  • 在堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口

2.链接

  1. 验证

    • 确保Class文件的字节流信息符合JVM的要求

    • 4个阶段校验(文件格式校验、元数据校验、字节码校验、符号引用校验)

    • 验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用-Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。

  2. 准备

    • 为类的静态变量(static)分配内存,并将其初始化为默认值
  3. 解析

    • 把类中的符号引用转换为直接引用

    • 符号引用就是一组符号来描述目标,可以是任何字面量。

    • 直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。

3.初始化

对类的静态变量,静态代码块执行初始化操作

image

个人博客文章链接 https://www.ccode.live/bertonlee/list/7?from=art

欢迎关注

欢迎关注公众号“码上开发”,每天分享最新技术资讯

image

相关文章

  • JAVA-大白话探索JVM-类加载过程(二)

    首先我们知道JVM是什么以及类加载器的作用 不清楚的可以看看JAVA-大白话探索JVM-类加载器(一) 现在我们来...

  • JAVA-大白话探索JVM-类加载器(一)

    JVM Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。JVM是Ja...

  • JVM-类加载过程

    一、定义 从 class 文件到内存中的类,按先后顺序需要经过加载、链接以及初始化三大步骤。 二、Java 语言的...

  • JVM类加载器与双亲委派模型(JDK8)

    引言 在上文JVM-类加载机制[https://imchenway.com/2021/07/01/JVM-%E7%...

  • JVM-类加载器

    JVM-类加载器 类与类加载器 对于类与类加载器有两种限定: 对于任意一个类,都需要由加载它的类加载器和这个类本身...

  • 面经题目学习

    java类加载过程类加载过程:加载、验证、准备、解析、初始化。类加载过程中主要是将Class文件(类的二进制字节流...

  • bean 的加载

    探索Bean加载过程 1.BeanFactory类的getBean(String name); A...

  • 01-类加载过程

    类加载过程 类加载可以分为加载、连接、初始化3个部分 加载 加载过程是指查找并加载类的二进制数据,加载class文...

  • 类加载

    一、类加载器 二、类加载过程 加载 连接 验证 准备 解析 初始化

  • 第一章 类加载过程

    要点 类加载过程 类加载器 一、类加载过程 1.类的加载过程 类的加载 .class文件过程分为:加载---->连...

网友评论

    本文标题:JAVA-大白话探索JVM-类加载过程(二)

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