java类装载的执行过程

发布时间:2023年12月22日

Java类的装载过程可以分为三个阶段:加载(Loading)、链接(Linking)和初始化(Initialization)。

  1. 加载(Loading)阶段: 首先,Java虚拟机会根据类的全限定名,通过类加载器(ClassLoader)定位并读取类的字节码文件,字节码文件通常存放在磁盘或者网络中。 然后,Java虚拟机会将字节码文件中的静态数据结构转化为运行时数据结构,并将类的相关信息存放在方法区(Method Area)中。这些信息包括类名、父类名、接口等。

  2. 链接(Linking)阶段: 链接阶段又可以分为三个步骤:验证(Verification)、准备(Preparation)和解析(Resolution)。

2.1 验证(Verification):Java虚拟机会对字节码进行验证,以确保字节码符合Java虚拟机规范。验证过程包括类型检查、字节码验证、符号引用验证等。

2.2 准备(Preparation):在准备阶段,Java虚拟机会为类的静态变量分配内存,并设置默认初始值。这些变量存放在方法区中。

2.3 解析(Resolution):解析阶段是将虚拟机符号引用转换为直接引用的过程。虚拟机符号引用指的是在字节码中使用的符号引用,比如类和方法的符号引用,而直接引用是指直接指向内存中的地址。

  1. 初始化(Initialization)阶段: 在初始化阶段,Java虚拟机会执行类的初始化代码,包括静态变量的显式赋值和静态代码块等。初始化是类加载过程中最耗时的阶段,它发生在类的首次主动使用时,并且只执行一次。

总结: Java类装载的执行过程包括加载、链接和初始化三个阶段。加载阶段读取类的字节码文件,并将信息存放在方法区中;链接阶段包括验证、准备和解析三个步骤,确保字节码符合规范并转换为直接引用;初始化阶段执行类的初始化代码,首次主动使用时触发,只执行一次。

文章来源:https://blog.csdn.net/Flying_Fish_roe/article/details/135109649
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。