上次学习了JVM的类加载过程,之前学习过的双亲委派模型变得生疏了,这篇笔记用于重新学习和以后复习~
JVM双亲委派模型
什么是双亲委派模型?
在加载一个类之前,先使用父加载器加载,若返回null才进行加载。
引入双亲委派模型是为了解决一些核心类,只能由某个加载器进行加载,避免有全限名一样但类加载器不一样的情况。
类的唯一标识是什么?
加载类的类加载器+类全限名
双亲委派模型的破坏
- jdk1.2,双亲委派模型出现时需要对旧类加载逻辑进行兼容,加入了findClass()方法,使得可以通过重写findClass()方法进行破坏
- jdk中定义好的标准(SPI),但需要外部jar包进行实现的,如JDBC,需要父加载器指定子加载器进行加载,破坏了双亲委派模型
- 热部署,热加载
类加载器类型
- BootStrap ClassLoader:<JAVA_HOME>\lib
- Extension ClassLoader:<JAVA_HOME>\lib\ext
- Application ClassLoader:ClassPath
- User ClassLoader