[JVM] Java类的加载过程

Java类的加载过程

在Java中,类的加载是指在程序运行时将类的二进制数据加载到内存中,并转化为可以被JVM执行的形式的过程。类的加载过程主要包括以下几个步骤:

  1. 加载(Loading):通过类的全限定名,使用类加载器将类的二进制数据加载到JVM中。类加载器会根据类的名称找到对应的字节码文件,并读取字节码文件的内容。

  2. 验证(Verification):在加载类的过程中,JVM会对字节码文件进行验证,确保其符合Java虚拟机规范的约束。验证的内容包括语法、语义以及字节码的合法性等方面。

  3. 准备(Preparation):在准备阶段,JVM会为类的静态变量分配内存,并设置默认的初始值。这些变量包括静态变量和静态常量。

  4. 解析(Resolution):解析阶段是将符号引用转换为直接引用的过程。符号引用是一种编译时的引用,直接引用是可以直接指向内存中的对象的引用。

  5. 初始化(Initialization):在初始化阶段,JVM会执行类的初始化代码,为静态变量赋予正确的初值,并执行静态代码块。初始化阶段是类加载过程的最后一步,只有当一个类被主动引用时才会触发初始化。可以有多种方式触发类的初始化,例如创建类的实例、访问类的静态变量和调用类的静态方法等。

  6. 使用(Using):在初始化完成后,类可以被正常使用,可以创建类的实例、调用类的方法等。

  7. 卸载(Unloading):当类不再被使用时,JVM会卸载该类,并释放相关的内存空间。

需要注意的是,类加载过程中,JVM并不一定需要一次性将所有的类都加载到内存中。JVM采用的是延迟加载(Lazy Loading)的策略,只有当需要使用某个类时才会对其进行加载。此外,JVM还提供了一系列的类加载器,用于从不同的来源加载类的二进制数据,例如本地文件系统、网络、ZIP文件等。

总结起来,类的加载过程包括加载、验证、准备、解析、初始化等阶段,通过这些步骤,Java虚拟机将类的二进制数据加载到内存中,并初始化类的静态变量和代码,使得该类可以被正常使用。

相关推荐
以卿a28 分钟前
C++ 模板初阶
开发语言·c++
s:10332 分钟前
【框架】参考 Spring Security 安全框架设计出,轻量化高可扩展的身份认证与授权架构
java·开发语言
道不尽世间的沧桑1 小时前
第17篇:网络请求与Axios集成
开发语言·前端·javascript
久绊A2 小时前
Python 基本语法的详细解释
开发语言·windows·python
南山十一少4 小时前
Spring Security+JWT+Redis实现项目级前后端分离认证授权
java·spring·bootstrap
软件黑马王子5 小时前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
闲猫5 小时前
go orm GORM
开发语言·后端·golang
427724005 小时前
IDEA使用git不提示账号密码登录,而是输入token问题解决
java·git·intellij-idea
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
李长渊哦5 小时前
常用的 JVM 参数:配置与优化指南
java·jvm