ClassLoader

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加载,这也叫双亲委派,这样可以保证类的加载是从上层到下层,避免了重复加载和安全性问题