11-类加载器双亲委托机制详解

类加载器双亲委托机制详解

  • 在双亲委托机制中,各个类加载器按照父子关系形成了树形结构(逻辑上的,其实是包含关系),除了根类加载器之外,其余的类加载器都有且只有一个父加载器。

在这里插入图片描述
在这里插入图片描述

  • 若有一个类加载器能够成功加载Test类,那么这个类加载器被称为定义类加载器,所有能成功返回Class对象应用的类加载器(包括自定义类加载器)都被称为初始类加载器。【上上图中,系统类加载就可以称为:定义类加载器,系统类加载和loader1就可以称为:初始类加载器】

    • 实例:

      public class MyTest7 {
          public static void main(String[] args) throws ClassNotFoundException {
              Class<?> clazz1 = Class.forName("java.lang.String");
              System.out.println(clazz1.getClassLoader());
      
              Class<?> clazz2 = Class.forName("Jvm.D");
              System.out.println(clazz2.getClassLoader());
          }
      }
      class D{
      
      }
      运行结果:
         null  --》 就根类加载器
         sun.misc.Launcher$AppClassLoader@18b4aac2 --》AppClassLoader,就是系统类加载器
      
发布了12 篇原创文章 · 获赞 0 · 访问量 220

猜你喜欢

转载自blog.csdn.net/qq_40574305/article/details/104784265