我正在研究jvm类加载过程,并且知道以下事实:
类加载器子系统使用委托层次结构算法
它将按顺序从BootStrap路径搜索 – >扩展路径 – >应用程序路径.
然后我想在实际代码中“尝试”这个,如下所示:
创建一个A类和B类; A类使用main()方法和B类变量.
编译之后,我使用jar命令从B.class获取B类的jar文件,然后删除B.class文件,将B.jar文件放到jdk / jre / lib / ext中
(因为oracle doc说extClassLoader不会在jdk / jre / lib / ext中搜索任何松散的类文件).
结果是ClassNotFoundException .so我的问题是:
1)jvm是否允许从BootStrap和Extension类路径加载用户的clasfile?
2)如果是这样,为什么使用委托层次算法加载它似乎导致效率低?
tks ….