java默认的classloader:java
1.BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar、charsets.jar等,可经过以下程序得到该类加载器从哪些地方加载了相关的jar或class文件。jvm
2.Extension ClassLoader:称为扩展类加载器,负责加载Java的扩展类库,默认加载JAVA_HOME/jre/lib/ext/目下的全部jar。spa
3.App ClassLoader:称为系统类加载器,负责加载应用程序classpath目录下的全部jar和class文件。ssl
java的classloader采用的双亲委托机制,每一个classloader实例都包含一个父classloader的引用,顶层classloader没有父类加载器,双亲机制原理以下:io
当须要加载某个类时,自上而下,先由父加载器进行加载,若是没有再往下逐级查找加载,直到委托者加载某个类,若是还没找到,直接抛出classnofound异常。class
classloader和class彻底相同时,jvm才认为这个类是相同的,不然会出现类型转换异常。原理