jvm :类加载原理

一.jvm类加载概念

    类加载是负责加载类的,如果传入的类名是一个二进制的形式的类名,那么类加载器会自动试图查找或生成类定义数据

    类加载器工作的阶段在:将二进制的Java字节码文件转换为一个对象的时候,即在new一个对象的时候,才会用到类加载器

    类加载器分为系统提供的加载器和开发人员自定义的加载器

            系统提供的加载器又可分为:1.bootstrap class loader(引导类加载器):用来加载java核心类库,是用原生代码生成,并不继承与java.lang.ClassLoader

                                                                2.extensions class loader(扩展类加载器):用来加载java扩展类库,

                                                                3.system class loader(系统类加载器):根据java类路径(CLASSPATH)来加载java类

  根据类加载器的分类,会形成一棵类加载器继承的树,根类是bootstrap class load,extensions class load继承自bootstrap class load,system class load继承extensions class load,用户自定义的类加载器一般是继承自system class load。


二.类加载过程

     自定义类加载器先查找自己是否已经加载了需要创建的类,如果没有则将此类的加载委托给其父类system classloader,system classloader检查自己是否加载了此类,如果没有加载则同样委托给他的父类extensions classloader,同样的extends classloader检查是否加载了此类,如果同样没有则再次委托给bootstrap classloader,如果bootstrap classloader也没有加载此类则返回null给extensions classloader,extensions classloader开始查找此类,没有找到则抛出CLASSNOTFOUND异常,返回到system classloader,同样的system classloader开始查找此类,同样如果没有找到则抛出同样的异常,并返回到自定义加载器,自定义加载器开始查找此类,如果也没有找到,则抛出CLASSNOTFOUND异常,也就是我们经常出现的类找不到异常。

 三.jvm类加载原理

   

四.jvm类加载应用

五.jvm类加载总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值