目 录CONTENT

文章目录

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

ByteNews
2019-08-19 / 0 评论 / 0 点赞 / 29,563 阅读 / 551 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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

11_类加载器双亲委托机制1

11_类加载器双亲委托机制2

11_类加载器双亲委托机制3

11_类加载器双亲委托机制4

以上只是HotSpot的实现,其他的不能确定。

  1. 自底向上检查类是否已经加载
  2. 自顶向下尝试加载类

11_类加载器双亲委托机制5

11_类加载器双亲委托机制6

代码:

public class MyTest7 {

    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> clazz = Class.forName("java.lang.String");
        System.out.println(clazz.getClassLoader());
        Class<?> clazz2 = Class.forName("top.tomxwd.classloader.C");
        System.out.println(clazz2.getClassLoader());
    }

}

class C {

}

输出结果:

null
sun.misc.Launcher$AppClassLoader@58644d46

可以看getClassLoader方法的注释,如果是BootStrap启动器的话,这个方法会返回null,还有其他情况,看注释即可。

而类C是在类路径java.class.path(classpath)加载,所以是用AppClassLoader;

0

评论区