深入分析Java ClassLoader原理

参见:
http://blog.youkuaiyun.com/xyang81/article/details/7292380

自我总结:

java提供的三个ClassLoader
1、BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar、charsets.jar等
2、Extension ClassLoader:称为扩展类加载器,负责加载Java的扩展类库,默认加载JAVA_HOME/jre/lib/ext/目下的所有jar。
3、App ClassLoader:称为系统类加载器,负责加载应用程序classpath目录下的所有jar和class文件。

加载类过程:
首先由最顶层的类加载器Bootstrap ClassLoader试图加载,如果没加载到,则把任务转交给Extension ClassLoader试图加载,如果也没加载到,则转交给App ClassLoader 进行加载,如果它也没有加载得到的话,则返回给委托的发起者,由它到指定的文件系统或网络等URL中加载该类。如果它们都没有加载到这个类时,则抛出ClassNotFoundException异常。

每一个类都有自己的ClassLoader,看下面代码:

@Test
    public void test(){
        ClassLoader loader = MyClass.class.getClassLoader();    //获得某个类的类加载器  
        // 或者MyClass.getClass().getClassLoader()
        while(loader != null) {  
            System.out.println(loader);  
            loader = loader.getParent();    //获得父类加载器的引用  
        }  
        System.out.println(loader);  
    }

结果:
sun.misc.Launcher$AppClassLoader@36baf30c
sun.misc.Launcher$ExtClassLoader@45283ce2
null

定义自已的ClassLoader以后看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值