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会将其从内存中卸载。

目录
相关文章
|
4月前
|
安全 Java 应用服务中间件
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
什么是类加载器,类加载器有哪些;什么是双亲委派模型,JVM为什么采用双亲委派机制,打破双亲委派机制;类装载的执行过程
118 35
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
|
3月前
|
缓存 前端开发 Java
JVM知识体系学习二:ClassLoader 类加载器、类加载器层次、类过载过程之双亲委派机制、类加载范围、自定义类加载器、编译器、懒加载模式、打破双亲委派机制
这篇文章详细介绍了JVM中ClassLoader的工作原理,包括类加载器的层次结构、双亲委派机制、类加载过程、自定义类加载器的实现,以及如何打破双亲委派机制来实现热部署等功能。
107 3
|
3月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
67 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
8月前
|
监控 Java 测试技术
滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境
【5月更文挑战第20天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
73 1
|
6月前
|
Java Perl
JVM内存问题之如何统计在JVM的类加载中,每一个类的实例数量,并按照数量降序排列
JVM内存问题之如何统计在JVM的类加载中,每一个类的实例数量,并按照数量降序排列
|
6月前
|
存储 安全 Java
开发与运维引用问题之JVM类加载过程如何解决
开发与运维引用问题之JVM类加载过程如何解决
39 0
|
6月前
|
存储 算法 Java
JAVA程序运行问题之Java类加载到JVM中加载类时,实际上加载的是什么如何解决
JAVA程序运行问题之Java类加载到JVM中加载类时,实际上加载的是什么如何解决
|
7月前
|
安全 前端开发 Java
《JVM由浅入深学习【一】 》JVM由简入深学习提升(类加载过程+父子类加载过程+类加载器+双亲委派机制)
《JVM由浅入深学习【一】 》JVM由简入深学习提升(类加载过程+父子类加载过程+类加载器+双亲委派机制)
56 0
|
7月前
|
存储 Java 编译器
【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
【搞定Jvm面试】 面试官:谈谈 JVM 类文件结构的认识
|
7月前
|
存储 XML 安全
JVM系列5-类文件结构
JVM系列5-类文件结构
44 0