ClassLoader学习笔记

本文详细介绍了Java类加载过程中的不同类加载器的作用及其工作原理,包括BootStrapClassLoader、ExtensionClassLoader和AppClassLoader等,并解释了双亲委托模型如何防止类的重复加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BootStrap ClassLoader 启动类加载器 负责jdk的核心类库

Extension ClassLoader 扩展类加载器 负责加载jdk扩展类库

App ClassLoader 系统类加载器 负责加载classpath下的所有class

自定义的ClassLoader类和Extension ClassLoader, App ClassLoader都继承自java.lang.ClassLoader, BootStarp Class Loader不是继承ClassLoader,是由C++ 写在jvm中。

类加载原理:使用的是双亲委托模型来搜索类,每个ClassLoader都有一个父类加载器的引用(不是继承),BootStrap ClassLoader没有父类加载器。当一个Class Loader实例加载类时,在亲自搜索之前委托给父类加载器。所以加载时先由BootStrap ClassLoader加载,如果没有加载到,把任务转给Extension ClassLoader类加载器,如果也没有加载到,就转给App ClassLoader, 如果还是没有,就返回给委托发起者,如果发起者也没有加载到,则抛出ClassNotFoundException, 否则,加载到内存中,返回该类在内存中的实例对象。

使用双亲委托模型可以避免类被重复加载。

JVM在判定两个类是否相同时,不仅判断是否类名相同,还要判断是否由同一个类加载器加载的。

自定义ClassLoader加载器,继承ClassLoader类,实现findClass(String name) 方法。

ClassLoad作用,将class文件加载到jvm中,能够动态的加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值