一、类加载器的作用是什么
类加载器(ClassLoader)负责在类加载过程中的字节码获取并加载到内存这一部分 , 用过加载字节码数据放到内存转换成byte[] , 接下来调用虚拟机底层方法将byte[] 转换成方法区和堆中的数据
二、有几种常见的类加载器?
- 启动类加载器(Bootstrap classLoader) 加载核心类
- 扩展类加载器(Extension classLoader) 加载扩展类
- 应用程序类加载器(Application classLoader) 加载应用classpath中的类
- 自定义类加载器 , 重写findClass方法
三、什么是双亲委派机制
每个Java实现的类加载器保存一个成员变量叫”父” (Paerent)类加载器
自底向上查找是否加载过 , 再由顶向下进行加载 避免了核心类被应用程序重写并覆盖的问题
提升了安全性
四、怎么打破双亲委派机制
- 重写loadClass方法 , 不再实现双亲委派机制
- JNDI , JDBC JCE等框架使用了SPI机制+线程上下文类加载器
- OSGi实现了一整套类加载机制 , 允许同级类加载器之间互相调用