1)Bootstrap ClassLoader 负责加载 $JAVA_HOME 中 jre/lib/rt.jar 里所有的class,由 C++ 实现,不是ClassLoader子类 2)Extension ClassLoader 负责加载 Java 平台中扩展功能的一些 jar 包,包括 $JAVA_HOME 中 j ..

Java 类加载器

1)Bootstrap ClassLoader

负责加载 $JAVA_HOME 中 jre/lib/rt.jar 里所有的class,由 C++ 实现,不是ClassLoader子类

2)Extension ClassLoader

负责加载 Java 平台中扩展功能的一些 jar 包,包括 $JAVA_HOME 中 jre/lib/*.jar 或-Djava.ext.dirs 指定目录下的 jar 包

3)App ClassLoader

负责记载classpath中指定的 jar 包及目录中 class

4)Custom ClassLoader

属于应用程序根据自身需要自定义的 ClassLoader,如 Tomcat、jboss 都会根据j2ee规范自行实现 ClassLoader

加载过程中会先检查类是否被已加载,检查顺序是自底向上,从Custom ClassLoader到BootStrap ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2433 引用 • 7893 回帖 • 876 关注
回帖
请输入回帖内容...