Jvm类加载机制
类加载器
-
Bootstrap ClassLoader:启动类加载器,加载jre中的lib目录下的jar, 或者-Xbootclasspath参数指定的路径中的虚拟机识别的jar, 仅按照文件名识别,如果不是类库中的jar,即使放在该目录中,也不会被加载。
-
Extension ClassLoader:加载jre中的/lib/ext中的jar, 或者是java.ext.dirs系统变量所指定的路径中的所有类库。
-
Application ClassLoader:程序的默认加载器,用于加载用户类路径ClassPath上的类库。
双亲委派模型
先检查是否已经被加载过,若没有被加载则调用父加载器的loadClass()方法, 若父加载器为空,则默认使用启动类加载器作为父加载器。 如果父加载器加载失败,抛出ClassNotFoundException异常后, 再调用自己的findClass()方法进行加载。