classloader

JVMClassLoader分三层,分别为Bootstrap ClassLoaderExtension ClassLoaderSystem ClassLoader,他们不是类继承的父子关系,是逻辑上的上下级关系。 

bootstrapclassloader(启动类加载器):负责加载java基础类 (即所有java.*开头的类) ,主要是 %JRE_HOME/lib/ 目录下的rt.jar、resources.jar、charsets.jar和class等,JVM启动后就首先加载它们。

extensionclassloader(扩展类加载器):负责加载java扩展类,主要是 %JRE_HOME/lib/ext 目录下的jar和class。

applicationclassloader(应用类加载器):负责加载当前java应用的classpath中的所有类。

由于classloader 加载类用的是全盘负责委托机制。所谓全盘负责,即是当一个classloader加载一个Class的时候,这个Class所依赖的和引用的所有 Class也由这个classloader负责载入,除非是显式的使用另外一个classloader载入。

 所以,当我们自定义的classloader加载成功了com.company.MyClass以后,MyClass里所有依赖的class都由这个classLoader来加载完成。

你可能感兴趣的:(java)