ClassLoader做用 ClassLoader的做用是把编译好的Class文件加载到JVM中。ClassLoader使用的是双亲委托模型来加载类的,每一个ClassLoader都有一个父类加载器,当ClassLoader须要加载某个类时,它先把这个任务委托给它的父类加载器试图加载,若是全部的父类加载器都没能加载到,才由本身加载。 Java默认提供3个ClassLoader 1. 启动类加载器(BootStrap ClassLoader):启动类加载器是Java类加载器的顶层加载器,负责加载JDK中的核心类库,如rt.jar、resources.jar、jce.jar等。 2. 扩展类加载器(Extension ClassLoader):扩展类加载器是负责加载JDK的扩展类库的,默认是ext目录下的全部jar. 3. 应用类加载器(App ClassLoader):应用类加载器负责加载classpath指向的class文件和jar包。 双亲委托模型的好处 双亲委托模型能够避免重复加载,当父类加载器已经加载了该类的时候,就没有必要再加载一次。另外从安全方面考虑,经过这种委托模式,能够避免用户写一些类来动态替代java核心api中定义的类。 ClassLoader的应用场景 ClassLoader可应用于服务器的热布署; ClassLoader可应用Class的加密。