JVM-类加载器

2023-12-30  本文已影响0人  ssttIsme

类的加载过程

加载(Loading)->
链接Linking【验证(Verification)->准备(Preparation)->解析(Resolution)】->
初始化(Initialization)

加载

1.通过一个类的全限定名(全类名)获取此类的二进制字节流。
2.将这个字节流所代表的静态存储结构转化为方法区(落地实现在jdk7及以前叫永久代,之后叫元空间)的运行时数据结构。
3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。

JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader).
Java虚拟机规范中将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。

在JVM中表示两个class对象是否为同一个类存在两个必要条件:
▶类的完整类名必须一致,包括包名
▶加载这个类的ClassLoader(指向ClassLoader实例对象)必须相同

对类加载器的引用
JVM必须知道一个类型是由引导加载器加载的还是由用户类加载器加载的。如果一个类型是由用户类加载器加载的,那么JVM会将这个类加载器的一个引用作为类型信息的一部分保存在方法区中。当解析一个类型到另一个类型的引用的时候,JVM需要保证这两个类型的加载器是相同的。

链接

验证

准备

解析

初始化

上一篇 下一篇

猜你喜欢

热点阅读