类加载
类加载的过程:
加载:
1.通过一个类的全限定名来获取定义此类的二进制字节流
2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口
验证:
准备:
解析:
初始化:
类加载器:
虚拟机设计团队把类加载阶段中的 "通过一个类的全限定名来获取描述此类的二进制字节流"(也就是类加载里的加载中的第一步) 这个动作放到Java虚拟机的外部去实现,以便让应用程序自己决定如何获取所需要的类。实现这个动作的代码模块称为 "类加载器"。
双亲委派模型:
从Java虚拟机的角度来讲,只存在两种类加载器:一种是启动类加载器(Bootstrap ClassLoader),它是用C++语言实现的,是虚拟机自身的一部分;另一部分就是所有其他的类加载器,这些类加载器都是由Java语言实现的,独立于虚拟机之外,并且全都继承自抽象类java.lang.ClassLoader。
从java开发人员的角度来看,可以划分为:
https://www.jianshu.com/p/3556a6cca7e5
https://baijiahao.baidu.com/s?id=1636309817155065432&wfr=spider&for=pc