java - 我认为java中只有一种类加载器就足够了

标签 java jvm classloader

<分区>

ClassLoader有多个子类:BootstrapClassLoader、ExtClassLoader、AppClassLoader等。

不过,我觉得只有一个BootstrapClassLoader就够了!

谁能告诉我为什么有这么多不同种类的类加载器?

注意:这就是为什么有这么多种类的类加载器,而不是为什么有这么多类加载器的实例!

最佳答案

每个类加载器都设计用于从不同位置加载类。例如,您实际上可以创建一个类加载器,它将从网络服务器加载类文件或从远程 Web 服务器下载类的二进制文件等。执行此操作的逻辑被嵌入到类加载器本身并提供一致的接口(interface),以便客户端可以加载类,而不管类加载器实际如何执行加载。 BootstrapClassLoader 能够从 JVM_HOME/lib 目录加载类...但是如果您需要从不同的位置加载它们呢??

简而言之,因为加载类的方法有无数种(好吧,不完全是),所以需要有一个灵活的系统来允许开发人员以他们想要的方式加载它们。

关于java - 我认为java中只有一种类加载器就足够了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627661/

相关文章:

java - Spark 操作中用户 lib jar 优先于 oozie 共享 lib

java - WebappClassLoader 间歇性地需要 12 秒来加载本地 JAR 文件

java - jenkins 插件可以使用与主要 jenkins webapp 不同版本的 jar 吗?

java - 对同一个对象有多个引用是不是很糟糕?

java - Spring IoC 和通用接口(interface)类型实现

java - 如何要求多个条件返回 true J​​ava

java - 将 String 转换为 Char 数组,然后仅返回数组的偶数索引

java - 你能创建一个不以 Object 作为其基类的类结构吗

java - 什么是字节码以及 JVM 如何处理它们

java - Zookeeper重置序列号