JVM类装载的执行过程

简介: JVM(Java虚拟机)类装载的执行过程包括以下几个步骤:
  1. 加载(Loading):通过类加载器(ClassLoader)查找并加载字节码文件(.class文件)。类加载器根据类的全限定名来定位字节码文件。
  2. 验证(Verification):对加载的字节码文件进行验证,确保其符合JVM规范。验证过程包括文件格式验证、元数据验证、字节码验证和符号引用验证等。
  3. 准备(Preparation):为类的静态变量(被static修饰的变量)分配内存空间,并设置初始值。非静态变量(实例变量)会在对象实例化时分配内存空间并设置初始值。
  4. 解析(Resolution):将符号引用(Symbolic Reference)替换为直接引用(Direct Reference)。符号引用包括类和接口的全限定名、字段和方法的名称等。
  5. 初始化(Initialization):执行类的初始化代码,包括静态变量的赋值和静态代码块的执行。初始化过程是类加载的最后一步,且是线程安全的。
  6. 使用(Usage):使用已加载和初始化的类创建对象并调用类的方法。

值得注意的是,JVM使用了延迟加载(Lazy Loading)的策略,即只有在需要使用某个类时才会进行加载和初始化。同时,JVM还提供了类的卸载(Unloading)机制,当某个类不再被使用时,JVM会将其从内存中卸载。

目录
相关文章
|
5月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
511 55
|
3月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
|
6月前
|
Arthas 监控 Java
Arthas sc(查看JVM已加载的类信息 )
Arthas sc(查看JVM已加载的类信息 )
285 9
|
8月前
|
存储 算法 Java
JVM: 内存、类与垃圾
分代收集算法将内存分为新生代和老年代,分别使用不同的垃圾回收算法。新生代对象使用复制算法,老年代对象使用标记-清除或标记-整理算法。
108 6
|
7月前
|
Java
jvm类常见加载顺序
jvm类常见加载顺序
|
安全 Java 应用服务中间件
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
什么是类加载器,类加载器有哪些;什么是双亲委派模型,JVM为什么采用双亲委派机制,打破双亲委派机制;类装载的执行过程
296 35
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
|
缓存 前端开发 Java
JVM知识体系学习二:ClassLoader 类加载器、类加载器层次、类过载过程之双亲委派机制、类加载范围、自定义类加载器、编译器、懒加载模式、打破双亲委派机制
这篇文章详细介绍了JVM中ClassLoader的工作原理,包括类加载器的层次结构、双亲委派机制、类加载过程、自定义类加载器的实现,以及如何打破双亲委派机制来实现热部署等功能。
636 3
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
244 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
Java Perl
JVM内存问题之如何统计在JVM的类加载中,每一个类的实例数量,并按照数量降序排列
JVM内存问题之如何统计在JVM的类加载中,每一个类的实例数量,并按照数量降序排列
231 0
|
存储 安全 Java
开发与运维引用问题之JVM类加载过程如何解决
开发与运维引用问题之JVM类加载过程如何解决
105 0