java中的类加载器有哪些
顶层BootstrapClassLoader 加载 jdk的%JAVA_HOME%的lib目录下的包中的类jar包
ExtClassLoader 加载 %JAVA_HOME/lib/ext%时lib下的ext目录下的扩展类jar包
AppClassloader 加载classpath下的jar,即自己编写的class和引用jar的class;不仅是一个系统类加载器,还是线程上下文加载器
如果要实现自定义类加载器,需要继承ClassLoader进行实现。
java中类加载的机制是什么
类加载机制为:双亲委派机制,这里的双亲指的就是bootstrapClassloader和ExtClassloader。
AppClassLoader加载类时不直接加载,首先向上委托,向它的父类ExtClassloader委托,查找缓存中是否存在要加载的类,如果存在则加载,如果不存在,继续向上委托bootstrapClassloader父类,查找是否存在要加载的类,如果存在则加载,如果不存在,则bootstrapClassloader向下查找,根据类全路径名在默认的加载路径中进行加载,如果找了则加载类,如不存在,则继续向下查找extClassloader的路径下进行查找,如果找到了则加载类,如果不存在继续向下,由AppclassLoader进行加载一般到这一步就会加载到类,如果没有程序会报错提示找不到类文件。