小结

 
 

一、类加载器的作用是什么

类加载器(ClassLoader)负责在类加载过程中的字节码获取并加载到内存这一部分 , 用过加载字节码数据放到内存转换成byte[] , 接下来调用虚拟机底层方法将byte[] 转换成方法区和堆中的数据

二、有几种常见的类加载器?

  1. 启动类加载器(Bootstrap classLoader) 加载核心类
  1. 扩展类加载器(Extension classLoader) 加载扩展类
  1. 应用程序类加载器(Application classLoader) 加载应用classpath中的类
  1. 自定义类加载器 , 重写findClass方法

三、什么是双亲委派机制

每个Java实现的类加载器保存一个成员变量叫”父” (Paerent)类加载器
自底向上查找是否加载过 , 再由顶向下进行加载 避免了核心类被应用程序重写并覆盖的问题
提升了安全性
notion image

四、怎么打破双亲委派机制

  1. 重写loadClass方法 , 不再实现双亲委派机制
  1. JNDI , JDBC JCE等框架使用了SPI机制+线程上下文类加载器
  1. OSGi实现了一整套类加载机制 , 允许同级类加载器之间互相调用