Java世界里每天都有大量的类被创建,被使用,被抛弃,那么一个类到底经历了什么?
首先来看看一个类的生命周期,用<<深入理解Java虚拟机>>的图可以清楚的表明,
可以看出来一个类从出生到死亡一共经历了7个步骤,而这里的验证,准备和解析步骤可以统称为连接,所以可以说一个是4个步骤,而这里需要注意的是这5个步骤并不一定是按照顺序执行的。
一.加载
说到加载就不得不说另外一个名词”类加载”, 这两个定义不能混淆,类加载包括”加载”,”验证”,”准备”,”解析”,”初始化”五个步骤,而”加载”是”类加载”全过程的开始。
那么什么时候开始加载?这个并没有强制规定,Java虚拟机只是规定了类进行初始化的时机,而在进行类的初始化时,初始化之前的步骤需要在这之前进行。
那么加载做了什么?其实主要做了三件事
- 获取此类的二进制流
- 将字节流的静态存储结构转化为方法区的运行时数据结构
- 在内存中生成一个java.lang.Class对象
其实就是从Java虚拟机之外通过二进制流的方式,引入我们需要的类信息,并且存储到虚拟机的方法区,并且生成了一个Class对象作为访问入口。而对于二进制流的引入来源,并没有太多规范。