我想了解Java类加载器是如何工作的。我读过一些文章,但有些东西对我来说还不清楚。
据我所知,第一类加载器是Bootstrap类加载器(BCL)。是由JVM加载的吗?
之后,BCL加载rt.jar库和扩展类加载器(ECL)。
反过来,ECL加载扩展和应用程序类加载器(ACL)。ACL负责从类路径加载所有用户开发的类。
这个描述正确吗?
这里有一些问题:
发布于 2015-02-02 17:17:58
答案:
这不是显式定义的,但很可能是用本机代码编写的。
是的,它将加载rt.jar (直到Java8,就像在Java9中一样,将会有新的模块系统)。是否加载ECL未显式定义。
是的,它加载扩展,并且没有显式定义它是否加载ACL。实际上,ACL加载类路径条目。
是的,这是正确的。由于类标识被定义为一对FQCN及其有效的类加载器,否则它将无法工作。
在标准的中,有父先委托模型,这意味着类加载器将首先询问它的父类,然后才会尝试自己加载类。
自定义类加载器的默认父级是应用程序类加载器.
问题是你为什么要这么做?您的程序不太可能正确运行。从形式上说,您可以通过YourClass.class.getClassLoader().getParent().来完成这一任务。
在API. null中,引导类加载器表示为。
https://stackoverflow.com/questions/28282667
复制相似问题