类从加载到虚拟机开始到出去内存。有这么几个阶段
加载
验证
准备
解析
初始化
使用
卸载
这几个过程 并不是有这绝对的先后顺序。某些可能会混合式进行。
加载,其实虚拟机并没有规定什么时候要加载,但对于初始化是有这么几种情况必须要初始化。
1.使用new实例化对象、读取或设置一个类的静态字段。但是如果被final 修饰的就不用,因为 final的静态字段 在编译时就已经放入了常量池中。
2.反射调用
3.当你初始化一个类的时候,如果父类还没有初始化,那父类就想要加载
4.虚拟机启动的时候,main(主类)会先加载
5.使用方法句柄,句柄相当与权限弱化的指针。