双亲委派扩展

Java虚拟机定义了三个主要的类加载器:

1、启动类加载器(Bootstrap Class Loader):也称为根类加载器,它负责加载Java虚拟机的核心类库,如java.lang.Object, java.lang.String等。启动类加载器是虚拟机实现的一部分,它通常是由本地代码C或C++实现的,不是Java类。

2、扩展类加载器(Extension Class Loader):它是用来加载Java扩展类库的类加载器。扩展类库包括javax和java.util等包,它们位于jre/lib/ext目录下。

3、应用程序类加载器(App Class Loader):也称为系统类加载器,它负责加载应用程序的类。它会搜索应用程序的类路径(包括用户定义的类路径和系统类路径),并加载类文件。

4、自定义类加载器 custom Class Loader开发人员可以根据需要实现的类加载器。

类加载器的工作原理

步骤为三个步骤

加载(Loading):根据类的全限定名(包括包路径和类名),定位并读取类文件的字节码。

链接(Linking):将类的字节码转换为可以在虚拟机中运行的格式。链接过程包括三个阶段:

验证(Verification):验证字节码的正确性和安全性,确保它符合Java虚拟机的规范。

准备(Preparation):为类的静态变量分配内存,并设置默认的初始值。

解析(Resolution):将类的符号引用(比如方法和字段的引用)解析为直接引用(内存地址)。

初始化(Initialization):执行类的初始化代码,包括静态变量的赋值和静态块的执行。

双亲委派机制图解

一直是向上一级进行加载

双亲委派优点:

可以避免类重复加载

可以保证类安全性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值