JVM ClassLoader以及双亲委派机制

ClassLoader负责将所有编译生成.class字节码的二进制数据流通过io传入jvm的runtimedata的方法区。
对于类本身来说:

1.编译器将E.java源文件编译为E.class字节码文件
2. ClassLoader将字节码转换为JVM中的Class<> 对象
3. JVM利用Class<>对象实例化为E对象

假设没有自定义加载器:
三层加载:app——>ext——>bootstrap
首先由app判断类是否被加载过,如果加载过,返回。
如果没有加载过就会交给app的父类ext,重复上述过程。
循环一直到Bootstrap,如果都没有加载过,就会自顶向下,去加载类。首先来到的是rt.jar或者看看是否是自己导入进来的jar包,去加载一下。如果没有,就会依次按照所给路径,按照Bootstrap ClassLoader->ExtClassLoader->AppClassLoader->CustomClassLoader去负责寻找他们对应所管辖的加载类的路径去负责加载对应的类文件。

**

需要注意的是,类加载器本身都是用同步锁包裹着的,防止多线程同步加载类。

**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值