java中的类加载器

java存在三种类加载器(这里指的是sun公司提供的,不包括其他供应厂商提供的),

1 .Bootstrap  ClassLoader这个类加载器是通过c++实现的,在JVM中,他是在JVM启动的时候加载类的,他加载的是jdk-->jre-->lib-->rt.jar"这个jar包中的类。

2.Extension ClassLoader 他加载的是jdk-->jre-lib-->ext目录中的jar包中的类,他的父类是Bootstrap Classloader


3.Application ClassLoader 它负责从classpath环境变量中加载某些应用相关的类,classpath环境变量通常由-classpath或-cp命令行选项来定义,或者是JAR中的Manifest的classpath属性。Application类加载器是Extension类加载器的子加载器。通过sun.misc.Launcher$AppClassLoader实现,他是System的默认加载器,在项目中他加载的是ClassPath下的jar包。


类加载器存在一个委托机制,

也就是说,当java虚拟机需要加载一个类的时候到底用那个加载器加载,如果在加载这个类的时候,这个类又存在和其他的类的关联,那么则需要加载另外一个类,则需要这个类加载器去加载另外一个类,每个子类加载器去加载类的时候,都会首先去把这个类的加载交给他的父类去加载,父类没有找到的话,就会交给他的子类去加载,如果没有找到则会抛出异常 :ClassNotFoundException,每个ClassLoader本身只能分别加载特定位置和目录中的类,但它们可以委托其他的类装载器去加载类,这就是类加载器的委托模式。

究竟要类加载器有什么作用呢?


个人通俗的观点:就是加载jar包中的class字节码文件,将其加载到JVm中供其他的代码调用。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值