说一下类加载的执行过程?
时间: 2024-05-22 07:15:44 浏览: 14
类加载的执行过程主要包括以下步骤:
1. 加载(Loading):在这个阶段,JVM会查找并加载需要用到的类文件。如果找不到相应的类文件,就会抛出ClassNotFoundException异常。
2. 链接(Linking):在这个阶段,JVM会对类文件进行验证、准备和解析。验证主要是检查类文件的格式、语义等是否符合Java规范;准备主要是为类的静态变量分配内存,并设置默认值;解析主要是将符号引用转换为直接引用。
3. 初始化(Initialization):在这个阶段,JVM会执行类的静态代码块,并初始化类的静态变量。如果类实现了接口,还会初始化接口中的静态变量。
4. 使用(Using):在这个阶段,类已经被加载、链接和初始化,可以被JVM使用了。
5. 卸载(Unloading):在这个阶段,JVM会清除不再使用的类,并释放相应的内存。
相关问题
说一下JVM中类装载的执行过程?
当一个Java程序要使用某个类时,JVM会首先检查该类是否已经被加载,如果没有加载,则会执行以下步骤:
1. 加载:查找并加载类的二进制数据。
2. 验证:确保加载的类的正确性。
3. 准备:为类的静态变量分配内存,并设置默认初始值。
4. 解析:将符号引用转成直接引用。
5. 初始化:执行类的初始化代码,包括静态变量赋值和静态代码块的执行。
当一个类被加载后,它的类信息会被存放在方法区中,包括类的名称、访问修饰符、常量池、字段描述符、方法描述符、父类、接口等信息。当程序需要使用该类时,JVM会根据类信息在方法区中查找该类,并将其实例化。
Spring 类加载过程?
Spring的类加载过程主要包括以下几个步骤:
1. 定位:Spring首先需要定位要加载的类。它使用Java标准类加载机制,通过类路径(classpath)来查找类文件。
2. 加载:一旦定位到类文件,Spring会使用ClassLoader将类文件加载到内存中。Spring使用了双亲委派模型的ClassLoader,它会首先尝试使用父ClassLoader加载类,如果父ClassLoader无法加载,则由当前ClassLoader加载。
3. 连接:连接阶段主要包括验证、准备和解析三个步骤。验证阶段会检查类文件的合法性,准备阶段会为静态变量分配内存并设置默认值,解析阶段会将符号引用转换为直接引用。
4. 初始化:在初始化阶段,Spring会执行类的静态初始化代码块和静态变量赋值操作。这是类加载过程中的最后一个阶段。
5. 使用:一旦类被成功加载和初始化,就可以使用该类创建对象或调用其方法。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)