1.类的加载时机
类从被加载到虚拟机内存开始,到卸载出内存为止,他的整个生命周期包括:加载(Loading),验证(verification),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using),和卸载(Unloading)7个阶段,其中验证,准备,解析3个部分统称为链接,这七个阶段的顺序如图:
注意:加载,验证,准备,初始化和卸载这5个阶段的顺序是固定的,类加载过程必须按照这种顺序进行执行。但是解析阶段不一定:它在某些情况下可以再初始化后在开始,这是为了支持java语言的运行时绑定(也称作为动态绑定或者晚期绑定)。
2.类的加载过程
1.加载
在加载阶段,虚拟机需要完成3件事情:
1.通过一个类的全限定名来获取定义此类的二进制字节流。
2.将这个字节流所代表的 静态存储结构转化为方法区的运行时数据结构。
3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口