类的加载过程?
1、加载
通过一个类的全限定名来获取定义次类的二进制流
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
2、验证
确保 Class 文件的字节流中包含的信息符合当前虚拟机要求
3、准备
为类分配内存并设置类变量初始值
4、解析
虚拟机将常量池内的符号引用替换为直接引用的过程
5、初始化
开始执行类中的 Java 代码
双亲委派机制?
如果一个类加载器收到一个类加载的请求,它首先不会自己加载,而是把这个请求委派给父类加载器。只有父类无法完成时子类才会尝试加载。
除顶层启动类加载器之外,其他都有自己的父类加载器。
类启动器有哪些?
1、启动类加载器:加载 lib 下或被 -Xbootclasspath 路径下的类
2、扩展类加载器:加载 lib/ext 或者被 java.ext.dirs 系统变量所指定的路径下的类
3、引用程序类加载器:ClassLoader负责,加载用户路径上所指定的类库。