java类加载器

来源:互联网 发布:淘宝客清退 编辑:程序博客网 时间:2024/06/11 08:42

一.  分类:

       a.      默认类加载器:只能从本地加载类文件。

                引导类加载器(加载java_home/lib),

         扩展类加载器(jdk_home/lib/ext),

         系统类加载器(也叫应用类加载器/java_classpath),这就是为什么要配置classpath了

       b.      自定义类加载器,可以实现加载远程的java类,比如游览器的jre。

二. 作用:运行时负责寻找和加载类文件.

三. 工作步骤:

    1.  当需要某个类时,首先加载器会把类的包名和类名转换成path路径(”.”-->”/”)

         2.  利用文件路径找到对应的与平台无关的字节码,即中间代码。

         3.  JVM将这个类通过字节流写入内存,以后便可以调用执行。

四.流程

    1. 首先去jvm中的cache里面找对应的类,如果找到就返回该类。

    2. 去父类的类加载器中查找,如果找到就返回,如果没有父类说明它就是引导类加载器。继续从引导类加载器中查找类,找到就返回,没有继续。

    3. 去子类类加载器中查找,如果找到则返回,没有则继续下步。

    4. 查找自定义类加载器,如果找到则返回,如果没有则抛classnotfound exception.

    5. 如果找到该类就把它重新放入cache,然后使用它。