【JVM】类加载流程

目录

1.加载

2.链接

(1)校验

(2)准备

(3)解析

3.初始化

4.使用

5.卸载


1.加载


加载阶段,简言之,查找并加载类的二进制数据,生成 Class 的实例

在加载类时,Java 虚拟机必须完成以下3件事情:

通过类的全名,获取类的二进制数据流
解析类的二进制数据流为方法区内的数据结构(Java 类模型)
创建 java.lang.Class 类的实例,表示该类型。作为方法区这个类的各种数据的访问入口


2.链接


(1)校验


当类加载到系统后,就开始链接操作,验证是链接操作的第一步

它的目的是保证加载的字节码是合法、合理并符合规范的

(2)准备


准备阶段(Preparation),简言之,为类的静态变量分配内存,并将其初始化为默认值

当一个类验证通过时,虚拟机就会进入准备阶段。在这个阶段,虚拟机就会为这个类分配相应的内存空间,并设置默认初始值。

(3)解析


在准备阶段(Resolution),简言之,将类、接口、字段和方法的符号引用转为直接引用

3.初始化


类的初始化是类装载的最后一个阶段。如果前面的步骤都没有问题,那么表示类可以顺利装载到系统中。此时,类才会开始执行 Java 字节码。(即:到了初始化阶段,才真正开始执行类中定义的 Java 程序代码)

4.使用


任何一个类型在使用之前都必须经历过完整的加载、链接和初始化3个类加载步骤。一旦一个类型成功经历过这3个步骤之后,便“万事俱备,只欠东风”,就等着开发者使用了

开发人员可以在程序中访问和调用它的静态类成员信息(比如:静态字段、静态方法),或者使用 new 关键字为其创建对象实例

5.卸载


当 Sample 类被加载、链接和初始化后,它的生命周期就开始了。当代表 Sample 类的 Class 对象不再被引用,即不可触及时,Class 对象就会结束生命周期,Sample 类在方法区内的数据也会被卸载,从而结束 Sample 类的生命周期

一个类何时结束生命周期,取决于代表它的 Class 对象何时结束生命周期
 

相关推荐

  1. JVM流程

    2024-01-28 09:12:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-28 09:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-28 09:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-28 09:12:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-28 09:12:02       20 阅读

热门阅读

  1. 【每日一题】YACS 243:5G通讯

    2024-01-28 09:12:02       31 阅读
  2. npm install 一直卡在 sill idealTree 解决方案

    2024-01-28 09:12:02       36 阅读
  3. k8s Ingress部署应用

    2024-01-28 09:12:02       33 阅读
  4. gbase审计日志

    2024-01-28 09:12:02       34 阅读
  5. python连接activemq

    2024-01-28 09:12:02       34 阅读
  6. 在Vue的模块开发中使用GPT的体验及总结

    2024-01-28 09:12:02       32 阅读
  7. STM32 简易智能家居嵌入式系统设计蓝图

    2024-01-28 09:12:02       27 阅读
  8. 2-1.分支结构之switch语句

    2024-01-28 09:12:02       31 阅读