1、类加载器
类加载器是一个用来加载类文件的类。Java源代码通过javac编译器编译成类文件。然后JVM来执行类文件中的字节码来执行程序。类加载器负责加载文件系统、网络或其他来源的类文件。有三种默认使用的类加载器:Bootstrap ClassLoader、Extension ClassLoader和System ClassLoader(或者叫作Application ClassLoader)。每种类加载器都有设定好从哪里加载类。
-
Bootstrap ClassLoader 负责加载rt.jar(JRE/lib/rt.jar)中的JDK类文件,它是所有类加载器的父加载器。Bootstrap类加载器没有任何父类加载器,如果你调用String.class.getClassLoader(),会返回null,任何基于此的代码会抛出NUllPointerException异常。Bootstrap加载器被称为初始类加载器。
-
Extension ClassLoader 将加载类的请求先委托给它的父加载器,也就是Bootstrap,如果没有成功加载的话,再从JRE/lib/ext目录下或者java.ext.dirs系统属性定义的目录下加载类,即双亲委托机制。Extension加载器由sun.misc.Launcher$ExtClassLoader实现。
-
System ClassLoader 默认的加载器(又叫作Application类加载器)。它负责从classpath环境变量中加载某些应用相关的类,classpath环境变量通常由-classpath或-cp命令行选项来定义,或者是JAR中的Manifest的classpath属性。Application类加载器是Extension类加载器的子加载器。通过sun.misc.Launcher$AppClassLoader实现。
原文地址:https://www.cnblogs.com/kingsonfu/p/10484806.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。