类加载器(1)-基础

类加载器加载顺序

  1. Bootstrap ClassLoader
  2. ExtClassLoader
  3. AppClassLoader

为啥加载顺序是这样的?从Launcher类说起

Launcher类

分析Launcher构造器源码

 public Launcher() {
        Launcher.ExtClassLoader var1;
        try {
            var1 = Launcher.ExtClassLoader.getExtClassLoader();
        } catch (IOException var10) {
            throw new InternalError("Could not create extension class loader", var10);
        }

        try {
            //AppClassLoader 父加载器 ExtClassLoader
            this.loader = Launcher.AppClassLoader.getAppClassLoader(var1);
        } catch (IOException var9) {
            throw new InternalError("Could not create application class loader", var9);
        }

        Thread.currentThread().setContextClassLoader(this.loader);
        .......
}

Launcher类中封装了ExtClassLoader和AppClassLoader

分析ExtClassLoader和AppClassLoader源码

static class ExtClassLoader extends URLClassLoader {
        public ExtClassLoader(File[] var1) throws IOException {
            // ExtClassLoader  父加载器 null
            super(getExtURLs(var1), (ClassLoader)null, Launcher.factory);
            ......
        }
}

static class AppClassLoader extends URLC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值