java类的动态载入模型(二)

阅读更多

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文件。

你可能感兴趣的:(Java,JVM,EXT,网络应用,C)