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类加载总结

阅读更多
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭