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加载一次。而加载的顺序是自顶向下,也就是由上层来逐层尝试加载此类。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于