1.类加载器的作用
类加载器负载在类加载过程中获取类的字节码并加载到内存中。通过加载字节码数据放入内存转换成二进制数组,接下来调用虚拟机底层方法将二进制数组转化成方法区和堆区中的数据。
2.有几种常见的类加载器
启动类加载器:加载核心类
扩展类加载器:加载扩展类(通用但不重要)
应用程序类加载器:加载项目中或第三方jar包中的类
自定义加载器:重写findClass方法(不是loadClass)
3.什么是双亲委派机制
每个Java实现的类加载器中保存了一个成员变量叫做父类加载器,自底向上查找是否加载过,再自顶向下进行加载,避免核心类被应用程序重写并覆盖,提升了安全性。
启动->扩展->应用程序->自定义
4.怎样打破双亲委派机制
重写loadClass方法,不再实现双亲委派机制
使用SPI机制+线程上下文类加载器
OSGi实现一整套类加载机制,允许同级类加载器之间互相调用