JVM在运行时身成三个classloader:Bootstrap ClassLoader、Extension ClassLoader和AppClassLoader。这些classloader是用来载入本地已知的类库。
Bootstrap
这是用C/C++写死在JVM里了,JVM启动时建立的第一个classloader,负责载入核心类库(jre/lib/*.jar)。
Extension ClassLoader
由Bootstrap生成该类,parent定为null(Bootstrap不是java写的,当然只能指定null),负责载入jre/lib/ext中的类。
AppClassLoader
由Bootstrap生成该类,parent定为Extension ClassLoader,负责载入classpath(环境变量)中指定的类库。
其他
在其他一些情况下,比如事先没有加入环境变量的类库,或者从其他一些地方获取class比如网络,利用上面的classloader就不能寻找到指定类。这时候就需要扩展classloader,给定class文件的准确位置,这样java应用程序才能找到class文件。
本文介绍了JVM在运行时生成的三种类加载器:BootstrapClassLoader、ExtensionClassLoader和AppClassLoader的功能与职责。深入探讨了它们如何加载不同路径下的类库,并讨论了在特定情况下如何通过扩展类加载器来定位并加载类。
9332

被折叠的 条评论
为什么被折叠?



