java中类加载器的学习

类加载器

1.概念
类加载器:类加载器是负责加载类的对象。将class文件(硬盘)加载到内存生成Class对象。

2.类加载器的组成
BootstrapClassLoader 根类加载器
也被称为引导类加载器,负责Java核心类的加载
比如System,String等。

ExtClassLoader 扩展类加载器
负责JRE的扩展目录中jar包的加载。
在JDK中JRE的lib目录下ext目录

AppClassLoader 系统类加载器
负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径。

3.类加载器的继承关系
所有的类加载器都是 java.lang.ClassLoader 的子类
在这里插入图片描述
使用 类.class.getClassLoader() 获得加载自己的类加载器

ClassLoader类中的成员方法getParent():返回委托的父类加载器

类加载器加载机制:全盘负责委托机制
全盘负责:A类如果要使用B类(不存在),A类加载器必须负责加载B类。
委托机制:A类加载器如果要加载资源B,必须询问父类加载是否加载。 如果加载,将直接使用。 如果没有
机制,自己再加载。
采用全盘负责委托机制保证一个class文件只会被加载一次,形成一个Class对象。

4.代码

package jiazaiqi;

import org.junit.Test;

public class Demo {
    @Test
    public void method(){
        ClassLoader cl = Demo.class.getClassLoader();

        System.out.println(cl);//jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc

        ClassLoader pr = cl.getParent();

        System.out.println(pr);//jdk.internal.loader.ClassLoaders$PlatformClassLoader@3891771e

        ClassLoader p = pr.getParent();

        System.out.println(p);//null
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值