JVM中classloader双亲委派


JVM中classloader双亲委派

public class Test {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ClassLoader cl = Test.class.getClassLoader();
  while(cl!=null) {
   System.out.println(cl.getClass().getName());
   cl = cl.getParent();
  }
  System.out.println(cl);
 }

}

以上这段程序运行的结果是:

sun.misc.Launcher$AppClassLoader  -->表示Test类的类加载器是AppClassLoader
sun.misc.Launcher$ExtClassLoader    -->表示AppClassLoader的类加载器是ExtClassLoader
null                                -->表示ExtClassLoader的类加载器是BootstrapClassLoader


classloader的体系结构如下
bootstrap classloader(java核心类) native  是由另外一种语言实现的本地方法
      |
ext classloader(java 扩展类)
      |
classpath appclassloader(应用路径下)
      |
uri classloader(uri路径)


所以一般情况下,在classpath下的class都会通过appclassloader去加载

本文永久更新链接地址:

相关内容