类加载器

类加载器包括:

(1)启动类加载器(Bootstrap ClassLoader)

hotspot中是使用c++实现的,负责加载jdk\jre\lib中的类库(如rt.jar), java程序无法引用启动类加载器

(2)扩展类加载器 (Extension ClassLoader)

负责加载jdk\jre\lib\ext 目录中的类,或者由java.ext.dirs系统变量指定的路径中的类库

(3)应用类加载器(Application ClassLoader)

(4)用户自定义类加载器

JVM类加载机制特点包括:

(1)全盘负责

 一个类负责加载某个Class时,该Class所依赖和引用的Class也将由该类加载器负责加载,除非显示使用另一个类加载器加载

(2)父类委托

只有父类加载器无法加载的时候才会尝试使用自己加载

(3)缓存机制

这就是为什么修改一个Class后需要重启JVM

类的加载方式包括:

(1)命令行启动应用时由JVM初始化装载

(2)通过Class.forName() 方法动态加载,默认会执行初始化块

(3)通过ClassLoader.loadClass()方法动态加载,不会执行初始化块

标签: 加载、classloader、ext、jre、类库、面试
  • 回复
隐藏