ClassLoader
用于把class文件加载到JVM中去,但是JVM启动的时候,并不会一次性加载所有的class文件,而是根据需要动态加载
Class加载流程
Java语言系统自带有三个类加载器
- Bootstrap ClassLoader:最顶层的加载类,主要加载核心类库
- Extention
ClassLoader:扩展的类加载器,加载目录
$JRE_HOME\lib\ext
下的jar包和class文件 - Application ClassLoader:加载当前应用的classpath的所有类
层次结构
每一个ClassLoader都有一个父ClassLoader,当一个类需要被加载时,ClassLoader会先委托给父ClassLoader尝试加载,如果父ClassLoader无法加载,则由当前ClassLoader加载,这也叫双亲委派,这样可以保证类的加载是从上层到下层,避免了重复加载和安全性问题